前面刚整理了关于JFreeChart的基本使用:http://zhangzhenting.iteye.com/blog/619010
补充:生成立体柱状图(返回立体柱状图的JFreeChart对象)
代码如下,很多配置依然和前面相同,很多属性的配置可以参考前面的例子。
public JFreeChart createBarChart3D(String title, String botTitle, String leftTitle, CategoryDataset data, boolean url) { // 创建栈堆型柱状图形 JFreeChart chart = ChartFactory.createBarChart3D(title, botTitle, leftTitle, data, PlotOrientation.VERTICAL, true, true, url); CategoryPlot plot = chart.getCategoryPlot(); StandardCategoryItemLabelGenerator scg = new StandardCategoryItemLabelGenerator(StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, new DecimalFormat("0")); BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseOutlinePaint(Color.BLACK); // 设置每个地区所包含的平行柱的之间距离 renderer.setItemMargin(0.1); // 显示每个柱的数值,并修改该数值的字体属性 renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); // 将每个柱的数值显示在柱顶 renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); renderer.setItemLabelAnchorOffset(10D); // 设置标签是否显示 renderer.setBaseItemLabelsVisible(true); // 设置标签数字的显示位置 renderer.setBaseItemLabelsVisible(true); // 设置超连接 renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator()); // 超连接可以扩展StandardCategoryURLGenerator对象的方法generateURL(); renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("aa.html")); // 设置柱型的间距 renderer.setMaximumBarWidth(0.2); renderer.setBaseItemLabelGenerator(scg); plot.setRenderer(renderer); // 设置柱的透明度 plot.setForegroundAlpha(0.9f); ValueAxis va = chart.getCategoryPlot().getRangeAxis(); // 设置Y轴的最小值 va.setLowerBound(0); return chart; }
不仅可以让轴数值进行一定角度的旋转,当柱图显示的数值太长时,为避免出现覆盖的情况,也可以对柱图上面的数值进行旋转,代码如下:
public JFreeChart createBarChart(String title, CategoryDataset dataSet, String Xtitle, String Ytitle, boolean url) { // 创建拄图类型的图表对象 JFreeChart chart = ChartFactory.createBarChart(title, Xtitle, Ytitle, dataSet, PlotOrientation.VERTICAL, true, false, url); StandardCategoryItemLabelGenerator scg = new StandardCategoryItemLabelGenerator(StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, new DecimalFormat("0")); // 显示的图例放到右边 // chart.getLegend().setPosition(RectangleEdge.RIGHT); Font ticketLableFont = new Font("Arial", Font.PLAIN, 11); Font labelFont = new Font("Arial", Font.PLAIN, 12); CategoryPlot plot = chart.getCategoryPlot(); plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); // 设置详细图表的显示细节部分的背景颜色 plot.setBackgroundPaint(new Color(255, 255, 204)); // 设置是否显示水平网格线 plot.setRangeGridlinesVisible(true); // 设置水平网格线颜色 plot.setRangeGridlinePaint(Color.black); // 将所有数据转换为整数形式 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // 设置X轴标题的倾斜程度 CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(labelFont);// 轴标题 domainAxis.setTickLabelFont(ticketLableFont);// 轴数值 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)); // 设置柱状体与图片边框的左右间距 // domainAxis.setLowerMargin(0.01); // domainAxis.setUpperMargin(0.01); // 设置柱状体与图片边框的上下间距 ValueAxis rAxis = plot.getRangeAxis(); rAxis.setLabelFont(labelFont); rAxis.setTickLabelFont(ticketLableFont); rAxis.setUpperMargin(0.15); rAxis.setLowerMargin(0.15); BarRenderer barRenderer = new BarRenderer(); // 设置每个柱的最大宽度 barRenderer.setMaximumBarWidth(0.20); // 设置每一个柱状图都显示数值 barRenderer.setBaseItemLabelGenerator(scg); barRenderer.setBaseItemLabelsVisible(true); ItemLabelPosition itemLabelPosition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT, TextAnchor.HALF_ASCENT_LEFT, -0.57D); barRenderer.setBasePositiveItemLabelPosition(itemLabelPosition); barRenderer.setBaseNegativeItemLabelPosition(itemLabelPosition); ItemLabelPosition itemLabelPositionFallback = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT, TextAnchor.HALF_ASCENT_LEFT, -0.57D); barRenderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback); barRenderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback); plot.setRenderer(0, barRenderer); // 设置是否在柱图的状态条上显示边框 CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer(); BarRenderer render = (BarRenderer) plot.getRenderer(); render.setItemMargin(0.0); render.setBaseItemLabelFont(new Font("Arial Narrow", Font.TRUETYPE_FONT, 10)); // 设置没个柱状的颜色 renderer.setSeriesPaint(0, new Color(128, 128, 192)); renderer.setSeriesPaint(1, new Color(128, 0, 64)); renderer.setSeriesPaint(2, new Color(128, 128, 0)); return chart; }
相关推荐
NULL 博文链接:https://zhangzhenting.iteye.com/blog/619010
JFreeChart使用详细教程
JFreeChart的使用,需要导入的2个jar文件: jcommon-1.0.23.jar和jfreechart-1.0.19.jar。 可以去官网下载:http://sourceforge.net/projects/jfreechart/files/ 上传以作后续使用时备份.
Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...
使用JFreeChart来创建基于web的图表
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领...
学习JFreechart的人 值得看看
jfreechart-1.5.2.jar,jfreechart|jfreechart
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够 用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领...
使用JFreeChart畫混合圖﹑柱狀圖﹑折線圖﹗混合圖示例可用在SQA畫不良柏拉圖中實際使用。(非普遍性示例)
具体使用jFreeChart 来画饼状图
JFreeChart详细使用教程
1. JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过...
JFreeChart入门小例子.rar;JFreeChart入门小例子.rar
JFreeChart入门_-_使用JFreeChart开发Pie(饼状图)
JFreeChart 指南 JFreeChart Guide JFreeChart 示例 JFreeChart demo
jfreechart小项目,下载解压后可以直接运行