81,092
社区成员
发帖
与我相关
我的任务
分享
package com.gb.business.test.model;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarChart2D {
private static CategoryDataset createDataset()
{
String s = "学生人数";
//创建横坐标的显示内容
String s1 = "北京";
String s2 = "天津";
String s3 = "河北";
String s4 = "安徽";
String s5 = "辽宁";
String s6 = "河南";
String s7 = "山东";
//构造生成图片所需要的数据集合
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(2000, s, s1);
defaultcategorydataset.addValue(600, s, s2);
defaultcategorydataset.addValue(1200, s, s3);
defaultcategorydataset.addValue(579, s, s4);
defaultcategorydataset.addValue(347, s, s5);
defaultcategorydataset.addValue(468, s, s6);
defaultcategorydataset.addValue(2000, s, s7);
return defaultcategorydataset;
}
//创建JFreeChart对象
private static JFreeChart createChart(CategoryDataset categorydataset)
{
JFreeChart jfreechart = ChartFactory.createBarChart("学校生源统计柱状图", "省份", "数量", categorydataset, PlotOrientation.VERTICAL, true, false, false);
jfreechart.setBackgroundPaint(Color.white);
jfreechart.getTitle().setFont(new Font("黑体", Font.BOLD, 20));
CategoryPlot plot = jfreechart.getCategoryPlot();
plot.setBackgroundPaint(Color.white);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.blue);
CategoryAxis domainAxis = plot.getDomainAxis();
//获取纵坐标
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
//将纵坐标间距设置为100
numberaxis.setTickUnit(new NumberTickUnit(50));
numberaxis.setLabelFont(new Font("SimSun",Font.PLAIN,13));
numberaxis.setTickLabelFont(new Font("SimSun",Font.PLAIN,12));
//设置横坐标的标题字体和大小
domainAxis.setLabelFont(new Font("SimSun",Font.PLAIN,13));
//设置横坐标的坐标值的字体
domainAxis.setTickLabelFont(new Font("SimSun",Font.PLAIN,12));
//使横坐标设置生效
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis();
return jfreechart;
}
//生成二维柱状图的图片,返回图片文件的名称
public static String generateBarChart( HttpSession session, PrintWriter pw) {
String filename = null;
CategoryDataset categoryDataset = createDataset();
JFreeChart chart = createChart(categoryDataset);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
try {
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);
} catch (IOException e) {
e.printStackTrace();
}
try {
ChartUtilities.writeImageMap(pw, filename, info, false);
} catch (IOException e) {
e.printStackTrace();
}
pw.flush();
return filename;
}
}