浏览 2130 次
锁定老帖子 主题:JFreechart创建刻度蜘蛛环图
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-15
对于刻度蜘蛛环图,效果如下图,网上有一些例子,但是只有刻度,同时不能指定刻度最大值。最后没办法,只好自己改一个。 改的时候,决定新建一个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);语句。 /** * Creates a new default instance. * * @param name the name of the theme (<code>null</code> not permitted). */ public StandardChartTheme(String name) { if (name == null) { throw new IllegalArgumentException("Null 'name' argument."); } this.name = name; this.extraLargeFont = new Font("Tahoma", Font.BOLD, 20);//将Tahoma改称服务器系统支持的中文字体即可,如宋体 this.largeFont = new Font("Tahoma", Font.BOLD, 14); this.regularFont = new Font("Tahoma", Font.PLAIN, 12); this.smallFont = new Font("Tahoma", Font.PLAIN, 10); this.titlePaint = Color.black; ...... } 总结一下,由于自己对JAVA画图绘图的API一窍不通,所以才用了这样的思路去改;在改的过程中,发现都是通过修改绘图的方法实现这些功能的,如果自己熟悉JAVA画图绘图的API,其实,拿到第一个demo的时候基本上就可以直接改了。 附件是刻度蜘蛛环图和demo的源码。下载附件:http://dl.iteye.com/topics/download/1f2048d6-6769-398d-87c5-e353de7afe69 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |