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