jfreechart详解二条形图

来源:互联网 发布:java发展史 编辑:程序博客网 时间:2024/05/16 01:01
package com.xlk.jfreechart; import java.awt.Color;import java.awt.Font;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.AxisLocation;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.labels.StandardCategorySeriesLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.junit.Test;/** * 对bar的一些操作 * @author star * */public class BarChartDemo {private static final Font font = new Font("宋体", Font.BOLD, 20);private static CategoryDataset createDataset() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(1.0, "Row 1", "Column 1");dataset.addValue(5.0, "Row 1", "Column 2");dataset.addValue(3.0, "Row 1", "Column 3");dataset.addValue(2.0, "Row 2", "Column 1");dataset.addValue(3.0, "Row 2", "Column 2");dataset.addValue(2.0, "Row 2", "Column 3");return dataset;}/*** *@time: 2013-5-7*@author: star* @Title: createBar2DChart * @Description: TODO(创建普通垂直条形图) * @return JFreeChart    返回类型 * @throws*/public static JFreeChart createBar2DChart(CategoryDataset dataset){String title1 = "前三季度各大公司JEE AS服务销量统计" ;String title2 = "季度" ;String title3 = "销量(单位:万台)" ;JFreeChart chart = ChartFactory.createBarChart(title1, title2, title3, dataset, PlotOrientation.VERTICAL, true, true, false);//标题字体chart.getTitle().setFont(font);//提示条字体chart.getLegend().setItemFont(new Font("宋体",Font.PLAIN,15));CategoryPlot plot = (CategoryPlot) chart.getPlot();//域轴字体(横轴)plot.getDomainAxis().setLabelFont(new Font("宋体",Font.PLAIN,15));plot.getDomainAxis().setTickLabelFont(new Font("宋体",Font.PLAIN,15));//范围轴字体plot.getRangeAxis().setLabelFont(new Font("宋体",Font.PLAIN,15));/*** 调用 JFreeChart 和 CategoryPlot 类方法可以进行一些简单的直方图表外观的修改。例如,改变图表和区域的背景颜色代码如下:*/chart.setBackgroundPaint(Color.white);plot.setBackgroundPaint(Color.lightGray);plot.setRangeGridlinePaint(Color.white);/*** 改变图表中每个系列直方图的颜色,使用如下代码:* */BarRenderer renderer = (BarRenderer) plot.getRenderer();renderer.setSeriesPaint(0, Color.gray);renderer.setSeriesPaint(1, Color.orange);renderer.setDrawBarOutline(false);/*** 此外,renderer 还可以控制每个种类中直方条形图之间的间距。因此我们可以在同一个种类中将空间完全去掉,代码如下:*/ renderer.setItemMargin(0.0);return chart;}@Testpublic void createBar2DChartTest(){CategoryDataset dataset = createDataset();JFreeChart chart = createBar2DChart(dataset);try {ChartUtilities.saveChartAsJPEG(new File("E:/temp/bar2D01.jpg"), chart, 800, 400);} catch (IOException e) {System.out.println("生成图片错误");e.printStackTrace();}}
 /*** *@time: 2013-5-7*@author: star* @Title: createBar2DChart2 * @Description: TODO(创建水平条形图) * @return JFreeChart    返回类型 * @throws*/public static JFreeChart createBar2DChart2(CategoryDataset dataset){JFreeChart jfreechart = ChartFactory.createBarChart("水平条形图", "Category", "Score (%)", dataset,PlotOrientation.HORIZONTAL, true, true, false);jfreechart.getTitle().setFont(font);jfreechart.setBackgroundPaint(Color.white);CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();categoryplot.setBackgroundPaint(Color.lightGray);categoryplot.setRangeGridlinePaint(Color.white);categoryplot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();numberaxis.setRange(0.0, 100.0);numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();barrenderer.setDrawBarOutline(false);barrenderer.setLegendItemToolTipGenerator(new StandardCategorySeriesLabelGenerator("Tooltip: {0}"));return jfreechart;}/*** *@time: 2013-5-7*@author: star* @Title: createDataset2 * @Description: TODO(数据集另一种创建方式,使用二维数组) * @return CategoryDataset    返回类型 * @throws*/private static CategoryDataset createDataset2() {double[][] ds = { { 1.0, 43.0, 35.0, 58.0, 54.0, 77.0, 71.0, 89.0 },{ 54.0, 75.0, 63.0, 83.0, 43.0, 46.0, 27.0, 13.0 },{ 41.0, 33.0, 22.0, 34.0, 62.0, 32.0, 42.0, 34.0 } };return DatasetUtilities.createCategoryDataset("Series ", "Factor ", ds);}@Testpublic void createBar2DChart2Test(){CategoryDataset dataset = createDataset2();JFreeChart chart = createBar2DChart2(dataset);try {ChartUtilities.saveChartAsJPEG(new File("E:/temp/bar2D02.jpg"), chart, 800, 400);} catch (IOException e) {System.out.println("生成图片错误");e.printStackTrace();}} } 
 

 

原创粉丝点击