`

使用JFreeChart小结(二)

阅读更多

前面刚整理了关于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;
	}

 

分享到:
评论

相关推荐

    使用JFreeChart小结(一)

    在"使用JFreeChart小结(一)"这篇博文中,作者主要分享了入门JFreeChart的基本步骤和一些关键概念。 首先,让我们了解如何添加JFreeChart到项目中。通常,你可以通过Maven或Gradle构建工具将JFreeChart库作为依赖...

    JFreechart小结

    #### 二、JFreeChart的获取与资源 JFreeChart是JFree公司在开源平台SourceForge.net上维护的一个项目,与之相关的还有JFreeReport、JCommon和JFreeDesigner等工具,分别用于报表处理、提供公共类库支持以及报表设计...

    JFreeChart用户开发指南1.0.6(中文).pdf

    #### 六、小结 JFreeChart作为一款成熟且功能全面的Java图表绘制库,不仅能够满足大多数开发者对于图表的基本需求,还提供了丰富的自定义选项以适应更复杂的应用场景。无论是初学者还是经验丰富的开发者,都可以...

    JFreechart

    #### 五、小结 通过上述介绍和示例代码,我们可以看到JFreechart是一个功能强大且易于使用的图表库。它可以帮助开发者轻松地在Java应用程序中创建各种类型的图表。为了更好地利用JFreechart,建议开发者深入了解其...

    jfreechart函数说明

    #### 四、小结 通过以上内容的学习,我们可以了解到JFreeChart中各种函数的具体作用及其应用场景。在实际开发过程中,合理利用这些函数能够帮助我们更高效地创建出美观且实用的图表。希望本文能够为大家提供一定的...

    jasperreport报表开发小结.docx

    jasperReport+ireport 报表开发小结总结了 JasperReports 的基本概念、特点、类库依赖、开发流程和 ireport 使用说明等内容,为读者提供了一个全面的了解 JasperReports 和 ireport 的报表开发指南。

    Jfreechart动态交叉表的生成与应用.pdf

    ### 小结 本文通过介绍数据库设计的基本原则以及动态交叉表的生成与应用,展示了如何通过遵循数据范式来优化数据库结构,并在此基础上实现了数据的有效管理和灵活展示。这对于提高数据处理能力、优化业务流程具有...

    优秀计算机软件实习小结模板.docx

    在【优秀计算机软件实习小结模板】中,实习地点是深圳市百盛佳信息咨询有限公司,实习时间为20__年12月5日至20__年4月5日。实习内容涉及Java软件开发,这是一种广泛使用的编程语言,尤其适合构建企业级应用。在实习...

    深入浅出Struts2(附源码)

    1.4 小结 13 第2章初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例...

    优秀计算机软件实习小结模板.pdf

    这篇实习小结主要涵盖了计算机软件实习的一些核心要点,包括实习的目的、实习地点、实习时间、实习内容以及实习过程中的挑战和解决方法。以下是对这些知识点的详细说明: 1. **实习目的**:实习的主要目标是将所学...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 ...15.7 小结 332

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    1.4 小结 13 第2章 初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 ...

    iText的学习是关于报表方面的

    #### 四、小结 通过对iText的学习,我们可以有效地利用其强大的功能来设计和生成高质量的报表。无论是简单的数据表格还是复杂的历史曲线图,iText都能够提供全面的支持。对于从事计算机运维工作的技术人员来说,...

    人工智能-机器学习-水稻两用核不育系繁殖基地智能选择系统.pdf

    系统的小结与展望部分提到,将进一步优化算法,提升预测准确性和系统易用性,同时扩大气象数据覆盖范围,以适应更多类型的水稻品种和繁殖需求。 总结,这个基于人工智能和机器学习的水稻两用核不育系繁殖基地智能...

    JasperReport+iReport报表工具详细开发手册

    - **小结区**:用于汇总数据,显示总和或其他统计信息。 - **页眉/页脚**:每个页面的顶部和底部区域,通常用于显示页码、时间戳等。 ##### 4.2. 变量、参数及字段 - **变量**:在报表设计过程中,可以定义变量来...

    JAVA核心技术

    我也在学习中,就我的学习经验,给出以下小结。(注意:个人观点,仅供参考,欢迎指正。)??1.什么是模式???模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是...

Global site tag (gtag.js) - Google Analytics