第一步:一样准备好输出数据,注意和圆饼图生产数据的方法不一样:
/*------------柱状图---------------*/
double[][] content= new double[][]{
{1310,1220,1110}, //猪肉 注意这四种肉都必须包 3 个数据 分别代表3 个城市,必须匹配
{720,700,680}, //牛肉
{1130,400,360}, //鸡肉
{440,1020,980} //鱼肉
};
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};
String[] columnKeys = {"guangdong","shanghai","beijing"}; //列名称,表示在柱状图上的显示
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, content);
第二步:一样通过HttpServlet的service方法:
JFreeChart chart = ChartFactory.createBarChart3D("三大城市肉类销量图", // 图表标题
"ROULEI", //Y轴说明
"XIAOLIANG", //X轴说明
dataset, // 数据集
PlotOrientation.VERTICAL, //垂直显示
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);// 创建图表
第四步:设置字体(解决标题,以及图块说明的 口口 问题)
Font titleFont = new Font("黑体", Font.BOLD, 20);
TextTitle textTitle = chart.getTitle();
textTitle.setFont(titleFont);// 为标题设置上字体
Font LegendFont = new Font("楷体", Font.PLAIN, 18);
LegendTitle legend = chart.getLegend(0);
legend.setItemFont(LegendFont);// 为图例说明设置字体
第五步:像JSP页面输出
res.setContentType("image/jpeg");// 将输出设置为image/jepg格式
利用ChartUtilties的writeChartAsJPEG 方法输出
ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart,
800, 450, null);// 输出图表
最后上图显示效果:
水平:
垂直: