JFreeChart生成柱状图

来源:互联网 发布:js递归算法1加到100 编辑:程序博客网 时间:2024/04/29 19:18
package com.test.picture;


import java.awt.Font;


import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.TextAnchor;


public class StatisticalChart {

/**
* 获取一个设置数据的jfreeChart
* @return jfreeChart
*/
public static JFreeChart getPic(){


double[][] date = {{510d,320d,580d,390d},{110d,340d,58d,390d},{545d,310d,480d,300d},{560d,410d,590d,490d}};
String[] columnKeys = {"第一季度","第二季度","第三季度","第四季度"}; 
String[] kindsName = {"部门一","部门二","部门三","部门四"};
CategoryDataset dataSet = DatasetUtilities.createCategoryDataset(kindsName,columnKeys, date);

//生成一个3D的图表区域对象
JFreeChart jfreeChart = ChartFactory.createBarChart3D("产品销量统计图",
"产品",
"销量",
dataSet,PlotOrientation.VERTICAL,
true,
true,
true);
return jfreeChart;
}

public static void main(String[] args){ 

JFreeChart jfreeChart = StatisticalChart.getPic();
ChartFrame frame = new ChartFrame("",jfreeChart);

//JFreeChart 1.0.16对中文不友好没办法只能自行设置一下字体
Font font = new Font("宋体",10,20);
jfreeChart.getTitle().setFont(font);

//获取图例的头
LegendTitle legend = jfreeChart.getLegend();
legend.setItemFont(font);


//获取图表区域对象
CategoryPlot plot = (CategoryPlot) jfreeChart.getCategoryPlot();

BarRenderer3D renderer = new BarRenderer3D();


//显示每个柱的数值
   renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
   renderer.setBaseItemLabelsVisible(true); 
   //正面柱状图元素定位  必须设置
   renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition( 
   ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
   renderer.setItemLabelAnchorOffset(10);// 设置柱形图上的文字偏离值 
   plot.setRenderer(renderer);



//分类轴坐标
CategoryAxis domainAxis = plot.getDomainAxis();
//X轴记号的字体设置
domainAxis.setTickLabelFont(font);
domainAxis.setLabelFont(font);

//数据轴
ValueAxis valueAxis = plot.getRangeAxis();
valueAxis.setLabelFont(font);


//自动产生一个适合图表大小的窗体
frame.pack();
frame.setVisible(true);
}


}
0 0
原创粉丝点击