:D 需要建一个坐标系 并在坐标系上画出一元多项式的分布曲线 坐标系要有刻度 请问java中有没有能够直接建立坐标系的类或方法呢 ??谢谢:D
jfreechart.
下载相关jar包
给个例子:
[code="java"]package jfreeChar;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.TimeSeriesDataItem;
public class Test {
public static void simpleJFreeChar() {
String title = "空调2002年市场占有率";
// 数据源
DefaultPieDataset piedata = new DefaultPieDataset();
piedata.setValue("联想", 27.3);
piedata.setValue("长城", 12.2);
piedata.setValue("海尔", 5.5);
piedata.setValue("美的", 17.1);
piedata.setValue("松下", 9.0);
piedata.setValue("科龙", 19.0);
// 创建jfreechart,都使用chartfactory来创建jfreechart,很标准的工厂设计模式
JFreeChart chart = ChartFactory.createPieChart(title, piedata, true,
true, true);
// 设定图片标题
chart.setTitle(new TextTitle(title, new Font("宋体", Font.ITALIC, 15)));
// 设定背景
chart.setBackgroundPaint(Color.white);
// 饼图使用一个pieplot
PiePlot pie = (PiePlot) chart.getPlot();
// pie.setsectionlabeltype(PiePlot.name_and_percent_labels);
// pie.setsectionlabeltype(PiePlot.name_and_value_labels);
// 设定显示格式(名称加百分比或数值)
// pie.set.setpercentformatstring("#,###0.0#%");
// 设定百分比显示格式
pie.setBackgroundPaint(Color.white);
pie.setLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 12));
// 设定背景透明度(0-1.0之间)
pie.setBackgroundAlpha(0.6f);
// 设定前景透明度(0-1.0之间)
pie.setForegroundAlpha(0.90f);
try {
// 第一个参数为文件名
// 第二个参数质量
// 第三个参数为哪个chart创建图片
// 第四个宽度
// 第五个高度
ChartUtilities.saveChartAsJPEG(new File("d:/jfreechar.jpg"), 1f,chart, 600, 600);
} catch (Exception e) {
e.printStackTrace();
}
}
// 四:创建曲线图
public static void charFree() {
TimeSeries series1 = new TimeSeries("用友");
for (int i = 1999; i < 2005; i++) {
for (int mon = 0; mon < 12; mon++) {
series1.add(new TimeSeriesDataItem(new Day(1, mon + 1, i),
new Double(500 + Math.random() * 100)));
}
}
TimeSeries series2 = new TimeSeries("金碟");
for (int i = 1999; i < 2005; i++) {
for (int mon = 0; mon < 12; mon++) {
series2.add(new TimeSeriesDataItem(new Day(1, mon + 1, i),
new Double(400 - Math.random() * 100)));
}
}
TimeSeries series3 = new TimeSeries("东软");
for (int i = 1999; i < 2005; i++) {
for (int mon = 0; mon < 12; mon++) {
series3.add(new TimeSeriesDataItem(new Day(1, mon + 1, i),
new Double(300 - Math.random() * 100)));
}
}
// 时间曲线数据集合
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(series3);
dataset.addSeries(series2);
dataset.addSeries(series1);
// 曲线图y轴提示
String range = "应收余额";
// 曲线图标题
String title = "趋势分析";
// 曲线图x轴提示
String domain = "月份走势";
JFreeChart chart = ChartFactory.createTimeSeriesChart(title, domain,
range, dataset, true, true, false);
// 曲线图自标题
String subtitlestr = "2003财年分析";
TextTitle subtitle = new TextTitle(subtitlestr, new Font("黑体",
Font.BOLD, 12));
chart.addSubtitle(subtitle);
chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
try {
ChartUtilities.saveChartAsJPEG(new File("d:/jfreechar.jpg"), 1f,chart, 600, 600);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 其实使用jfreechart创建图片很简单,不同的的图片类型区别在于设置数据集
// simpleJFreeChar();
charFree();
List list = new ArrayList();
for(int i=0;i<10;i++){
list.add(new Long((long) (Math.random()*100)));
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
// System.out.println("-------------------------------------------------------------");
java.util.Collections.sort(list);
for(int i=0;i<list.size();i++){
// System.out.println(list.get(i));
}
}
}
[/code]