jfreechart实现java画图.doc_第1页
jfreechart实现java画图.doc_第2页
jfreechart实现java画图.doc_第3页
jfreechart实现java画图.doc_第4页
jfreechart实现java画图.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

package com.dsc.utils;import java.awt.Color;import java.awt.Font;import java.awt.RenderingHints;import java.io.File;import java.io.IOException;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.axis.ValueAxis;import org.jfree.chart.labels.StandardXYItemLabelGenerator;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.xy.XYSeries;import org.jfree.data.xy.XYSeriesCollection;import org.jfree.ui.RectangleInsets;public class JfreeChartUtils_Line /* * param pictureTitle 图表标题 * param xTitle x轴标题 * param yTitle y轴标题 * param dataset 数据集 * param width 宽度 * param height 高度 * return 图片的路径 */ public String createLinePicture(String pictureTitle , String xTitle , String yTitle , XYSeriesCollection dataset , int width , int height) String path = ; JFreeChart chart = ChartFactory.createXYLineChart(pictureTitle, yTitle, xTitle, dataset, PlotOrientation.VERTICAL, true, true, false); chart.setBackgroundPaint(Color.LIGHT_GRAY); / 设置图表属性 / 取得CategoryPlot,设定Plot参数 XYPlot plot = chart.getXYPlot(); /设置网格背景颜色 plot.setBackgroundPaint(Color.white); /设置网格竖线颜色 plot.setDomainGridlinePaint(Color.pink); /设置网格横线颜色 plot.setRangeGridlinePaint(Color.pink); / 设置是否显示垂直网格线 plot.setDomainGridlinesVisible(true); / 设置是否显示水平网格线 plot.setRangeGridlinesVisible(true); XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer(); /设置曲线图与xy轴的距离 plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D); /设置曲线是否显示数据点 xylineandshaperenderer.setItemLabelGenerator(new StandardXYItemLabelGenerator(); xylineandshaperenderer.setBaseShapesVisible(true); /是否显示数据点的值 xylineandshaperenderer.setBaseItemLabelsVisible(true); /X轴整数显示 NumberAxis x = (NumberAxis)plot.getDomainAxis(); x.setStandardTickUnits(NumberAxis.createIntegerTickUnits(); /Y轴整数显示 NumberAxis y = (NumberAxis)plot.getDomainAxis(); y.setStandardTickUnits(NumberAxis.createIntegerTickUnits(); ValueAxis domainAxis = plot.getDomainAxis(); domainAxis.setTickLabelFont(new Font(黑体, Font.BOLD, 12); / 设置Y轴的标题文字 domainAxis.setLabelFont(new Font(黑体, Font.BOLD, 18); domainAxis.setUpperMargin(0.1); ValueAxis rAxis = plot.getRangeAxis(); rAxis.setUpperMargin(0.15); rAxis.setLowerMargin(0.15); chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); / 设置标题字体 TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font(黑体, Font.PLAIN, 20); / 设置Y轴坐标上的文字 rAxis.setTickLabelFont(new Font(黑体, Font.BOLD, 12); / 设置Y轴的标题文字 rAxis.setLabelFont(new Font(黑体, Font.BOLD, 18);/ 图表底部乱码 chart.getLegend().setItemFont(new Font(黑体, Font.BOLD, 18); / 向磁盘输出图片文件 path = f:/line.jpg; File file = new File(path); try ChartUtilities.saveChartAsJPEG(file, chart, width, height); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); finally return path; public static XYSeriesCollection createDataXYSet() XYSeriesCollection seriesCollection = new XYSeriesCollection(); XYSeries series1 = new XYSeries(笔记本); XYSeries series2 = new XYSeries(数码相机); XYSeries series3 = new XYSeries(手机); series1.add(1, 70); series1.add(2, 40); series1.add(3, 30); series1.add(4, 30); series1.add(5, 20); series1.add(6, 30); series2.add(1, 10); series2.add(2, 50); series2.add(3, 40); series2.add(4, 47); series2.add(5, 35); series2.add(6, 52); series3.add(1, 44); series3.add(2, 38); series3.add(3, 25); series3.add(4, 29); series3.add(5, 23); series3.add(6, 83); seriesCollection.addSeries(series1); seriesCollection.addSeries(series2); seriesCollection.addSeries(series3); return seriesCollection; public static void main(String args) JfreeChartUtils_Line chart = new JfreeChartUtils_Line(); chart.createLinePicture(电子产品销售图, 产品数据(单位/万), 统计月份, chart.createDataXYSet(), 700, 490); package com.dsc.utils;import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.RenderingHints;import java.io.File;import java.io.IOException;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.ValueAxis;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.CategoryItemRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;public class JfreeChartUtils /* * 根据指定的数据集生成一张柱形图 * param pictureTitle 图表标题 * param xTitle x轴标题 * param yTitle y轴标题 * param dataset 数据集 * param width 图片宽度 * param height 图片高度 * return 返回图片的路径 */ public String createHistogram(String pictureTitle , String xTitle , String yTitle , CategoryDataset dataset , int width , int height) /保存图片的绝对路径 String path = ; JFreeChart chart = ChartFactory.createBarChart(pictureTitle, yTitle, xTitle, dataset, PlotOrientation.VERTICAL, /图表显示方向(水平、垂直) true, /是否显示图例(对于简单的柱状图必须是false) true, /是否生成工具 false);/是否生成URL链接 /设置整个图表的背景色 chart.setBackgroundPaint(Color.LIGHT_GRAY); /获得图表区域对象 CategoryPlot plot = chart.getCategoryPlot(); / 设置图表的显示部分的背景色 plot.setBackgroundPaint(Color.PINK); / 设置垂直网格线颜色 plot.setDomainGridlinePaint(Color.black); / 设置是否显示垂直网格线 plot.setDomainGridlinesVisible(true); / 设置水平网格线颜色 plot.setRangeGridlinePaint(Color.yellow); / 设置是否显示水平网格线 plot.setRangeGridlinesVisible(true); /取得NumberAxis,将数据转换为整数形式 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits(); / 设置是否在柱状图的状态条上显示边框 BarRenderer render = (BarRenderer) plot.getRenderer(); render.setItemMargin(0.1); / 设置柱状图的渐变色 CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer(); GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, new Color(255, 200, 80), 0.0f, 0.0f, new Color(255, 255, 40); GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, new Color(50, 255, 50), 0.0f, 0.0f, new Color(100, 255, 100); GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f, 0.0f, new Color(255, 100, 100); GradientPaint gp3 = new GradientPaint(0.0f, 0.0f, new Color(108, 108, 255), 0.0f, 0.0f, new Color(150, 150, 200); renderer.setSeriesPaint(0, gp0); renderer.setSeriesPaint(1, gp1); renderer.setSeriesPaint(2, gp2); renderer.setSeriesPaint(3, gp3); /设置X轴标题的倾斜程度 CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setCategoryLabelPositions(CategoryLabelPositions .createUpRotationLabelPositions(1.57); / 设置柱状体与图片边框的左右间距 domainAxis.setLowerMargin(0.01); domainAxis.setUpperMargin(0.01); / 设置柱状体与图片边框的上下间距 ValueAxis rAxis = plot.getRangeAxis(); rAxis.setUpperMargin(0.15); rAxis.setLowerMargin(0.15); / 设置每一组柱状体之间的间隔 render.setItemMargin(0.0); / 设置消除字体的锯齿渲染(解决中文问题) chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); /设置X轴上类型子图片的字体类型 chart.getLegend().setItemFont(new Font(黑体, Font.BOLD, 18); / 设置标题字体 TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font(黑体, Font.PLAIN, 20); / 设置X轴坐标上的文字 domainAxis.setTickLabelFont(new Font(黑体, Font.PLAIN, 18); / 设置X轴的标题文字 domainAxis.setLabelFont(new Font(黑体, Font.PLAIN, 18); / 设置Y轴坐标上的文字 rAxis.setTickLabelFont(new Font(黑体, Font.PLAIN, 18); / 设置Y轴的标题文字 rAxis.setLabelFont(new Font(黑体, Font.PLAIN, 18); path = f:/test.png; File file = new File(path); try ChartUtilities.saveChartAsPNG(file, chart, width, height); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); return path; private CategoryDataset createCategoryDataset() String str1 = 笔记本; String str2 = 台式机; String str3 = 数码相机; String str4 = 手机; String date1 = 1月; String date2 = 2月; String date3 = 3月; Str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论