jfreechart图形绘制(一)
代码:
package number1;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//用java生成各种图形,比如柱状图、曲线图、条形图、饼图
public class JavaCreateMap {
// 生成曲线图
private void createQXT(String title, String dataName1, String dataName2, String xtitle, String ytitle,String filePath) {
try {
XYSeries xyseries = new XYSeries(dataName1);
XYSeries xyseries1 = new XYSeries(dataName2);
XYSeriesCollection xyseriescollection = new XYSeriesCollection();//数据集
double count1 = 1;
double count2 = 1;
for (int i = 0; i < 31; i++) {//表示该图片有31行数据
String data1 = ""+(i+1);
String data2 = ""+(i+2);
for (int j = 0; j < 2; j++) {//每行2跳数据
if (j == 0) {
xyseries.add(count1, Double.parseDouble(data1));
count1++;
}
if (j == 1) {
xyseries1.add(count2, Double.parseDouble(data2));
count2++;
}
}
}
xyseriescollection.addSeries(xyseries);
xyseriescollection.addSeries(xyseries1);
JFreeChart chart = createChart(xyseriescollection, title, xtitle, ytitle); // 标题、x轴标题、y轴标题
chart.setBackgroundPaint(Color.white); // 设置背景色
chart.setBorderVisible(false); // 设置不边框
XYPlot plot = (XYPlot) chart.getPlot();
//saveChartAsJPEG:表示保存为jpeg格式的图片
ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 800, 500);//宽800,高500
} catch (IOException e) {
e.printStackTrace();
}
}
public static JFreeChart createChart(XYDataset xydataset, String title, String xtitle, String ytitle) {
JFreeChart jfreechart = ChartFactory.createXYLineChart(title, xtitle, ytitle, xydataset,
PlotOrientation.VERTICAL, true, true, false);
XYPlot xyplot = (XYPlot) jfreechart.getPlot();
XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();
xylineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] { 6F, 6F }, 0.0F));
xylineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, null, 0.0F));
xylineandshaperenderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
xylineandshaperenderer.setItemLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 24));// 设置字体
xyplot.setRenderer(xylineandshaperenderer);
NumberAxis numberaxis = (NumberAxis) xyplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
return jfreechart;
}
public static void main(String[] args) {
JavaCreateMap jcm = new JavaCreateMap();
String title="**公司采矿完成量";
String xtitle = "2012年10月";// X轴标题
String ytitle = "完成量";// Y轴标题
String dataName1 = "计划";//数据代表的含义
String dataName2 = "完成";//数据代表的含义
String filePath = "D:\\aa.jpeg";
jcm.createQXT(title, dataName1, dataName2, xtitle, ytitle,filePath);
System.out.println(" ------生成图片完成"+filePath+"------");
}
}
效果: