jfreechart图形绘制(一)


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+"------");
	}

}

效果:



猜你喜欢

转载自blog.csdn.net/qq_34514415/article/details/78663677