JFreeChart最佳实践:刻度蜘蛛环图

开发 后端
本文将介绍作者通过Java最佳图形解决方案JFreeChart实现刻度蜘蛛环图的详细过程。

JFreeChart主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。当前JFreeChart最新版本是1.0.13,下面demo和刻度蜘蛛环图都基于此版本。

对于刻度蜘蛛环图,效果如下图,网上有一些例子,但是只有刻度,同时不能指定刻度最大值。最后没办法,只好自己改一个。

改的时候,决定新建一个chart类,通过继承JFreechart自带例子中的SpiderWebPlot类来实现,SpiderWebPlot类的demo效果见下图。

这个demo没有刻度,没有圆环。

整理一下所有要做的事情:

1.加入刻度,可自定义刻度数以及刻度的最大值,同时刻度值前后可以是加入单位符号,如百分号、美元符号、人民币符号等;

2.加入圆环,圆环的半径与刻度一一对应,有几个刻度,就有几个圆环

画刻度的代码直接参考了网上的例子,自己增加了刻度数、刻度最大值、单位符号的功能;然后画圆环的代码参考自一个demo,见下图,然后修改了相应的算法,确保与刻度对应,搞定。

在修改的过程中,还碰到了中文乱码问题。对与JFreechart中文乱码问题,网上搜素答案也是一大把,但都不能解决。最后还是跟踪了一下源代码,发现在创建JFreeChart对象的时候,默认应用了JFreechart提供的标准主题,其标准主题提供的文字是Tahoma,这个字体不支持中文,最后一次性的将其改为“宋体”解决了(如果不想修改JFreechart的代码,可能就需要在每个地方去单独设置这些参数了)。在JFreechart中,调用这个标准主题的代码都是在创建jfreechart对象的代码中,如demo代码中的createChart方法的ChartUtilities.applyCurrentTheme(jfreechart);语句,以及工厂类ChartFactory的createPolarChart方法中currentTheme.apply(chart);语句。

  1. /**  
  2.  * Creates a new default instance.  
  3.  *  
  4.  * @param name  the name of the theme (<code>null</code> not permitted).  
  5.  */ 
  6. public StandardChartTheme(String name) {  
  7.     if (name == null) {  
  8.         throw new IllegalArgumentException("Null 'name' argument.");  
  9.     }  
  10.     this.name = name;  
  11.     /将四个Tahoma改成系统支持的中文字体即可,如宋体  
  12.     this.extraLargeFont = new Font("Tahoma", Font.BOLD, 20);/  
  13.     this.largeFont = new Font("Tahoma", Font.BOLD, 14);  
  14.     this.regularFont = new Font("Tahoma", Font.PLAIN, 12);  
  15.     this.smallFont = new Font("Tahoma", Font.PLAIN, 10);  
  16.     this.titlePaint = Color.black;  
  17.     ......  

总结一下,由于自己对JAVA画图绘图的API一窍不通,所以才用了这样的思路去改;在改的过程中,发现都是通过修改绘图的方法实现这些功能的,如果自己熟悉JAVA画图绘图的API,其实,拿到第一个demo的时候基本上就可以直接改了。

进入原文下载刻度蜘蛛环图和demo的源码。

原文链接:http://easycode.iteye.com/blog/1172486

【编辑推荐】

  1. JFreeChart最佳实践:仪表盘
  2. JFreeChart最佳实践:甘特图
  3. JFreeChart最佳实践:时序图
  4. JFreeChart最佳实践:散点图
  5. JFreeChart最佳实践:折线图
责任编辑:林师授 来源: lhx222的博客
相关推荐

2011-12-21 13:44:33

JavaJFreeChart

2011-12-21 12:58:41

JavaJFreeChart

2011-12-21 13:35:39

JavaJFreeChart

2011-12-21 13:52:27

JavaJFreeChart

2011-12-21 12:46:43

2011-12-21 13:25:33

JavaJFreeChart

2011-12-21 14:15:08

JavaJFreeChart

2023-05-19 08:00:00

ReactJSJavaScript蜘蛛图

2011-12-20 12:53:43

JavaJFreeChart

2023-07-21 01:12:30

Reactfalse​变量

2011-08-18 11:05:21

jQuery

2012-08-09 09:10:56

代码审查代码

2014-08-19 10:06:53

IAP

2024-08-21 08:02:47

2014-06-09 15:50:08

2023-09-11 08:50:03

Maven工具关系管理

2015-09-23 09:08:38

java反射

2023-09-13 08:00:00

JavaScript循环语句
点赞
收藏

51CTO技术栈公众号