社区
Web 开发
帖子详情
jfreechart 作图的属性怎么设置啊?高手指点吧!!!!
gyl086
2008-12-16 03:03:24
最近在学习使用jfreechart通过jsp页面做图表,好容易把图弄出来啦,现在发现y轴上的文字不知道怎么设置属性,意思就是比如Y轴的刻度用来显示人数,那么我就要在旁边加上“人数”的说明吧,默认的“人数”是水平的,我想让“人数”这两个字垂直显示,该怎么办啊?请高手指教啊!!!!!
...全文
224
6
打赏
收藏
jfreechart 作图的属性怎么设置啊?高手指点吧!!!!
最近在学习使用jfreechart通过jsp页面做图表,好容易把图弄出来啦,现在发现y轴上的文字不知道怎么设置属性,意思就是比如Y轴的刻度用来显示人数,那么我就要在旁边加上“人数”的说明吧,默认的“人数”是水平的,我想让“人数”这两个字垂直显示,该怎么办啊?请高手指教啊!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lgy_come_on
2008-12-31
打赏
举报
回复
jfreechart使用经验总结(针对版本:jfreechart-1.0.0-pre2.zip)
问题一:在每次生成jfreechar图片的时候都会抛出异常,异常指出问题出在ChartFactory.createXYLineChart(picName, "时间轴", "数据", xydataset,true, true, false)这行代码上(或create其他类型的chart)
分析:由于jfreechart用到的画图库是Java AWT,所以需要确保JVM运行在headless模式下。如果在Unix系统中使用jfreechar,需要在tomcat的bin目录下catalina.sh文件中run和start两处添加-Djava.awt.headless=true \
问题二:在Unix系统下生成的jfreechart图片中的中文出现乱码
分析:乱码有两种情况:
一种是中文显示为问号(?),这种情况一般是由于汉字编码转换出错。需要对Unix系统中当前用户的.cshrc文件中setenv LC_CTYPE iso_8859_1修改为setenv LC_CTYPE zh即可。
一种是中文显示为方框(□),这种情况一般是由于jfreechart中用到的字体在当前Unix系统中不存在。jfreechart包中所用到的所有字体如下:
new Font("SansSerif", 1, 12)
new Font("foo", 1, 9)
new Font("Arial", 0, 10)
new Font("Dialog", 0, 12)
new Font("Bitstream Vera Sans", 0, 11)
其中new Font("Bitstream Vera Sans", 0, 11)字体用于对各颜色线条的注释信息,Unix系统中一般不存在这种字体,需要安装该字体或者修改package org.jfree.chart.block中LabelBlock文件的构造函数中所出现的这种字体。
问题三:jfreechart生成的图片时间轴中时间的显示格式问题
分析:在生成两组或者多组数据的chart时,分为以下两种情况:
一种是X和Y轴数据都仅仅只是数据,则可以直接使用ChartFactory.createXYLineChart(picName, "X轴数据", "Y轴数据", xydataset,true, true, false),xydataset是通过XYSeriesCollection收集XYSeries获取的数据生成:
XYSeries[] xyseries=new XYSeries[count];
for(int i = 0; i < count; i ++){
xyseries[i] = new XYSeries(name[i]);
}
xyseries[1].add(double arg0,double arg1);
xyseries[2].add(double arg0,double arg1);
两组数据都必须以双精度格式传入,在chart图中的X和Y轴数据也都会以双精度格式显示。
一种是X轴数据是时间,Y轴数据为与这个时间对应的一个有一定精确度的数据,这种情况就得使用ChartFactory.createTimeSeriesChart(picName, "时间轴", "数据", xydataset,true, true, false),xydataset是通过TimeSeriesCollection收集TimeSeries获取的数据生成:
TimeSeries timeseries[] = new TimeSeries[count];
for(int i = 0; i < count; i ++){
timeseries[i] = new TimeSeries(name[i],Minute.class);
}
timeseries[0].addOrUpdate(new Minute(minute,hour,date,month,year), double arg1);
timeseries[1].addOrUpdate(new Minute(minute,hour,date,month,year), double arg1);
(注:这里使用addOrUpdate而不使用add是有原因的,如果使用add的话,送入一次数据,生成一个chart图片,当下一次其他某个地方再调用这个方法生成chart图片的时候,就会报出数据冲突的异常信息,估计是上次送入的数据没有清除掉,所以为了防止这种情况一般都使用addOrUpdate)
两组数据是以(时间,双精度数据)成对送入的,X轴将会是一个时间轴,而且会以通用的时间格式进行显示,显示的时间格式可以在代码中定制,详细代码如下:
DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis();
dateaxis.setDateFormatOverride(new SimpleDateFormat("时间格式"));
还有一个地方需要说明一下,时间轴上显示的时间精度可以根据自己的需要选择设定,最大可以精确到年,最小可以精确到毫秒,设置的位置在timeseries[i] = new TimeSeries(name[i],Minute.class)代码中,目前精确度设置为分(Minute.class),所有可选精确度如下:Year.class Month.class Week.class Day.class Hour.class Minute.class Seconds.class Millisecond.class,然后在timeseries[0].addOrUpdate(new Minute(minute,hour,date,month,year), double arg1)代码中也做相应调整即可。
gyl086
2008-12-18
打赏
举报
回复
怎么没有高手来给指点一二吗?
gyl086
2008-12-16
打赏
举报
回复
是吗,谢谢楼上,那你做的是平滑的曲线啊,还是折线啊?我做出来的怎么是折线,我想做成平滑曲线那样的。
lgy_come_on
2008-12-16
打赏
举报
回复
你把代码贴出来下。我上星期做了一个项目就是用jfreechart的曲线图,可不是像你说的横着显示的,我的是纵着显示的。
gyl086
2008-12-16
打赏
举报
回复
谢谢楼上的,不过我看他给提供的例子中,有的就是垂直的。而且在网上找了一个例子,他的Y轴描述是“产量”,他就这两个字,等我运行以后就是垂直的,不过在他的代码中并没有看到什么地方设置了属性。他的例子代码是:
JFreeChart chart = ChartFactory.createBarChart3D
("水果产量图","水果","产量",dataset,PlotOrientation.VERTICAL,true,false,false);
就是这个“产量”在他的图上就是垂直的。
shuai45
2008-12-16
打赏
举报
回复
貌似实现不了
jfreechart里有的demo,好好看看。
如果实现K型图,x和y只能是标准的数据
关于用
JFreeChart
作图
很好的
jfreechart
学习实例,学起来很轻松。
jfreechart
-
作图
所有图形代码示例
jfreechart
-
作图
所有图形代码示例
jfreechart
折线图demo
一份非常简单的
jfreechart
折线图demo!!!!!!!!
jfreechart
demo
我正在学习这个,觉得不错传上来了 含有大量
jfreechart
的demo 使用Eclipse可直接运行看效果 博客里还有一些我的学习记录
JFreeChart
混合图表演示
JFreeChart
混合图表 Example for mutiple
jfreechart
plot. Demonstration for the chart!
Web 开发
81,091
社区成员
341,719
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章