关于Jfreechart 横坐标问题 (折线图)

wy19280469 2010-03-12 10:43:24
用Jfreechart做一个折线图

横坐标是日期,纵坐标是数值

横坐标的日期,我手动添加的就是每个月有多少天,

然后显示的日期是从0开始,然后总日期还多现实一天

比如说 3月份有31天

横坐标显示0~32天 没查出什么原因,也不知道为什么这样,看了1天多

大家有遇到类似问题的么,帮忙看看问题出在哪里

粘贴主要代码

/*============================= 折线图 初始化 ===============================*/
// 创建集合收集器
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();

//默认折线
XYSeries defaultSeries = new XYSeries("");
// 新用户折线
XYSeries newUserSeries = new XYSeries(rowNew);
// 老用户折线
XYSeries oldUserSeries = new XYSeries(rowOld);
// 总用户折线
XYSeries totalSeries = new XYSeries(total);
// 移动总用户折线
XYSeries cmSeries = new XYSeries(cm);
// JAVA 平台
XYSeries javaSeries = new XYSeries(java);
// 联通总用户折线
XYSeries unSeries = new XYSeries(un);
// C++ 平台
XYSeries cSeries = new XYSeries(c);
/*============================= 折线图 初始化 ===============================*/

// 一个月拥有的天数
int days = Integer.valueOf((String) request.getAttribute("days"));



for (int i = 1, j = 0; i <= days; i++) {

//日期显示[01、02、03…… ]
String date = "" + i;
if (j < size) {
map = (Map) list.get(j);
//如果数据从第一天开始记录,则day从1开始,如果和i相等就开始绘制
if (Integer.valueOf(map.get("day").toString()) == i) {

newUserSeries.add(Integer.parseInt(map.get("day").toString()), Double.valueOf(map.get("cnt2").toString()));
oldUserSeries.add(Integer.parseInt(map.get("day").toString()), Double.valueOf(map.get("cnt3").toString()));
j++;
} else {
//这里是没有数据的情况,默认0
if (i < 10) {
date = "0" + i;
}
defaultSeries.add(Integer.parseInt(date),defaultvalue);

}
}else {
if (i < 10) {
date = "0" + i;
}
//这是都没有数据的时候,绘制图
defaultSeries.add(Integer.parseInt(date),defaultvalue);
}

// 添加新用户数据集合
xySeriesCollection.addSeries(newUserSeries);
// 添加旧用户数据集合
xySeriesCollection.addSeries(oldUserSeries);
// 添加总用户集合
xySeriesCollection.addSeries(totalSeries);
// 添加JAVA 用户集合
xySeriesCollection.addSeries(javaSeries);
// 添加C 用户集合
xySeriesCollection.addSeries(cSeries);
// 添加CM用户集合
xySeriesCollection.addSeries(cmSeries);
// 添加UN用户集合
xySeriesCollection.addSeries(unSeries);
xySeriesCollection.addSeries(defaultSeries);

//创建折线图模型 【标题、横坐标标题、纵坐标标题、数据集、……】
JFreeChart jfreechart = ChartFactory.createXYLineChart(title
.toString(), "统计日期", "用户量", xySeriesCollection,
PlotOrientation.VERTICAL, true, true, false);
//jfreechart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
jfreechart.setBackgroundPaint(Color.WHITE);

/*------------设定Plot参数-------------*/
// 使用CategoryPlot设置各种参数。以下设置可以省略。
XYPlot plot = (XYPlot) jfreechart.getPlot();
// 背景色 透明度
plot.setBackgroundAlpha(0.5f);
// 前景色 透明度
plot.setForegroundAlpha(0.5f);
// X轴整数显示
NumberAxis x = (NumberAxis)plot.getDomainAxis();
x.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

XYLineAndShapeRenderer lineandshaperenderer = (XYLineAndShapeRenderer) plot.getRenderer();
// series 点(即数据点)可见
lineandshaperenderer.setBaseShapesVisible(true);
// series 点(即数据点)间有连线可见
lineandshaperenderer.setBaseLinesVisible(true);
// 显示折点数据
//lineandshaperenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
//lineandshaperenderer.setBaseItemLabelsVisible(true);

代码都是部分主要的

date 就是每个月的时间啊,也没有地方绘制 出 比date多1的地方

可3月份 31天 它就绘制出 0~32
2月份28天 它就绘制出 0~29

比较头疼啊

帮忙看一下,问题出在哪,还需要设置什么?还是哪不对
...全文
307 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wy19280469 2010-03-12
  • 打赏
  • 举报
回复
完了,看来JFreechart 确实不那么好用啊·····

wy19280469 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jacy_young 的回复:]

遇到过啦, 我之前遇到过类似的问题。

我的横轴是分时段 出现 01—— 24
[/Quote]

大哥,说说最后怎么解决 的 啊 ???
Jacy_Young 2010-03-12
  • 打赏
  • 举报
回复
遇到过啦, 我之前遇到过类似的问题。

我的横轴是分时段 出现 01—— 24
wy19280469 2010-03-12
  • 打赏
  • 举报
回复
有知道的吗?自己顶一个

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧