jFreeChart柱形图.docx
- 文档编号:13119812
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:8
- 大小:16.25KB
jFreeChart柱形图.docx
《jFreeChart柱形图.docx》由会员分享,可在线阅读,更多相关《jFreeChart柱形图.docx(8页珍藏版)》请在冰点文库上搜索。
jFreeChart柱形图
jFreeChart柱形图
JFreeChart柱状图
以下是源代码:
/*
*jfreechart
*
**/
package.terje.jfreechart;
importjava.awt.Font;
importjava.io.File;
importjava.io.IOException;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.axis.CategoryAxis;
importorg.jfree.chart.axis.ValueAxis;
importorg.jfree.chart.labels.ItemLabelAnchor;
importorg.jfree.chart.labels.ItemLabelPosition;
importorg.jfree.chart.labels.StandardCategoryItemLabelGenerator;
importorg.jfree.chart.plot.CategoryPlot;
importorg.jfree.chart.plot.PlotOrientation;
importorg.jfree.chart.renderer.category.BarRenderer;
importorg.jfree.data.category.CategoryDataset;
importorg.jfree.data.category.DefaultCategoryDataset;
importorg.jfree.ui.TextAnchor;
/**
**
*@authorterjeliu
*/
publicclassDomeOne
{
publicstaticvoidmain(String[]args)throwsIOException
{
JFreeChartchart=ChartFactory.createBarChart("桂林甜点供应(个)","城区",
"供应量",getDateSet(),PlotOrientation.HORIZONTAL,true,true,
false);
//---------显示中文------------\\
chart.getTitle().setFont(newFont("宋体",Font.PLAIN,20));
CategoryPlotplot=chart.getCategoryPlot();
//设置分类中文,就是图片里面的那个"城区"和"xx区"
CategoryAxiscgAxis=plot.getDomainAxis();
cgAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,11));
cgAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
//设置数值中文
ValueAxisvAxis=plot.getRangeAxis();
vAxis.setTickLabelFont(newFont("宋体",Font.PLAIN,11));
vAxis.setLabelFont(newFont("宋体",Font.PLAIN,15));
//显示说明中文
chart.getLegend().setItemFont(newFont("宋体",Font.PLAIN,16));
//-------微调整-------\\
//设置边距,右边的(防止最大值,跑到图片外面去,所以要设置一下)
vAxis.setUpperMargin(0.08);
//设置最小值(有个最小值好一些,容易突出重点嘛)
vAxis.setLowerBound(200);
//------将每个柱子显示的数值显示出来---------\\
BarRendererbarRender=newBarRenderer();
barRender
.setBaseItemLabelGenerator(newStandardCategoryItemLabelGenerator());
barRender.setBaseItemLabelFont(newFont("宋体",Font.PLAIN,11));
barRender.setBaseItemLabelsVisible(true);
//避免因为数值过小,显示不明显,或则看不到
barRender.setMinimumBarLength(10);
plot.setRenderer(barRender);
//调节柱子显示的数值的位置
//通过设置ItemLabelPosition里面的2个静态参数(奇怪了,ItemLabelAnchor的含义文档好像没有怎么说)
barRender.setBasePositiveItemLabelPosition(newItemLabelPosition(
ItemLabelAnchor.OUTSIDE2,TextAnchor.TOP_LEFT));
//------将结果以图片形式输出------\\
Filef=newFile("c:
\\domeone.jpg");
ChartUtilities.saveChartAsJPEG(f,chart,800,640);
}
/**
*数据集
*
*/
publicstaticCategoryDatasetgetDateSet()
{
DefaultCategoryDatasetdcd=newDefaultCategoryDataset();
dcd.addValue(552,"布丁","七星高新区");
dcd.addValue(1131,"蛋挞","七星高新区");
dcd.addValue(912,"海苔饼","七星高新区");
dcd.addValue(513,"脆皮奶","七星高新区");
dcd.addValue(313,"巧克力蛋糕","七星高新区");
dcd.addValue(946,"布丁","秀峰区");
dcd.addValue(563,"蛋挞","秀峰区");
dcd.addValue(712,"海苔饼","秀峰区");
dcd.addValue(399,"脆皮奶","秀峰区");
dcd.addValue(299,"巧克力蛋糕","秀峰区");
dcd.addValue(564,"布丁","象山区");
dcd.addValue(765,"蛋挞","象山区");
dcd.addValue(592,"海苔饼","象山区");
dcd.addValue(799,"脆皮奶","象山区");
dcd.addValue(499,"巧克力蛋糕","象山区");
dcd.addValue(464,"布丁","叠彩区");
dcd.addValue(263,"蛋挞","叠彩区");
dcd.addValue(992,"海苔饼","叠彩区");
dcd.addValue(691,"脆皮奶","叠彩区");
dcd.addValue(291,"巧克力蛋糕","叠彩区");
dcd.addValue(261,"布丁","雁山区");
dcd.addValue(333,"蛋挞","雁山区");
dcd.addValue(594,"海苔饼","雁山区");
dcd.addValue(599,"脆皮奶","雁山区");
dcd.addValue(201,"巧克力蛋糕","雁山区");
returndcd;
}
}
现在预测一个需求,用户不需要在柱子弹上方显示数字,而是显示百分比。
那么需要将标识的生成器换一个构造函数。
newStandardCategoryItemLabelGenerator("{0}{1}{2}{3}",NumberFormat.getNumberInstance(),
newDecimalFormat("0.00%"));
{0}表示甜点的种类,例如:
“布丁”
{1}表示地区,例如:
七星区
{2}表示数量,例如七星区的布丁数量是552
{3}表示百分比,这样一来就在柱状图里面显示百分比
//设定柱子上面的颜色
customBarRenderer.setSeriesPaint(0,Color.decode("#24F4DB"));//给series1Bar
customBarRenderer.setSeriesPaint(1,Color.decode("#7979FF"));//给series2Bar
customBarRenderer.setSeriesPaint(2,Color.decode("#FF5555"));//给series3Bar
customBarRenderer.setSeriesPaint(3,Color.decode("#F8D661"));//给series4Bar
customBarRenderer.setSeriesPaint(4,Color.decode("#F284DC"));//给series5Bar
customBarRenderer.setSeriesPaint(5,Color.decode("#00BF00"));//给series6Bar
customBarRenderer.setSeriesOutlinePaint(0,Color.BLACK);//边框为黑色
customBarRenderer.setSeriesOutlinePaint(1,Color.BLACK);//边框为黑色
customBarRenderer.setSeriesOutlinePaint(2,Color.BLACK);//边框为黑色
customBarRenderer.setSeriesOutlinePaint(3,Color.BLACK);//边框为黑色
customBarRenderer.setSeriesOutlinePaint(4,Color.BLACK);//边框为黑色
customBarRenderer.setSeriesOutlinePaint(5,Color.BLACK);//边框为黑色
以下是来自网络的一些信息,对学习jfreechart很有用,虽然里面有些方法被抛弃了。
学JFreeChart不得不看的中文API
ValueAxis(Axis)类:
voidsetAutoRange(booleanauto)自动设置数据轴数据范围
voidsetAutoRangeMinimumSize(doublesize)自动设置数据轴数据范围时数据范围的最小跨度
voidsetAutoTickUnitSelection(booleanflag)数据轴的数据标签是否自动确定(默认为true)
voidsetFixedAutoRange(doublelength)数据轴固定数据范围(设置100的话就是显示MAXVALUE到MAXVALUE-100那段数据范围)
voidsetInverted(booleanflag)数据轴是否反向(默认为false)
voidsetLowerMargin(doublemargin)数据轴下(左)边距
voidsetUpperMargin(doublemargin)数据轴上(右)边距
voidsetLowerBound(doublemin)数据轴上的显示最小值
voidsetUpperBound(doublemax)数据轴上的显示最大值
voidsetPositiveArrowVisible(booleanvisible)是否显示正向箭头(3D轴无效)
voidsetNegativeArrowVisible(booleanvisible)是否显示反向箭头(3D轴无效)
voidsetVerticalTickLabels(booleanflag)数据轴数据标签是否旋转到垂直
voidsetStandardTickUnits(TickUnitSourcesource)数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jFreeChart 柱形图
![提示](https://static.bingdoc.com/images/bang_tan.gif)