平时jfree画图,数据一般都是全的。这个实例中有一个数据为NUll
这样一来,拆线中间缺了一个口子,很不美观(如附件中的缺口图)。
请教大家,代码应该怎样改才能得到如附件中效果,把缺口部分用虚线连接,然后标明为缺口。 这样的问题相信用过JFreeChart 朋友都碰到过。
还有些比如:怎样标记出拆线图中的最高,最低点及均值点等一些特殊位置?
请大家积极讨论,谢谢啦!
//========代码开始======================================================
import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* JfreeChart 单线图
* @author Administrator
*
* @date:2008-07-07
*
*/
public class LineChartTest {
/**
* 获取简单数据集对象
* @return dataset
*/
public DefaultCategoryDataset getJdDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "猪肉", "一月");
dataset.addValue(200, "猪肉", "二月");
dataset.addValue(800, "猪肉", "三月");
dataset.addValue(null, "猪肉", "四月");
dataset.addValue(600, "猪肉", "五月");
dataset.addValue(900, "猪肉", "六月");
return dataset;
}
/**
* 创建图表主对象JFreechart,并设置图像显示
* @return JFreeChart
*/
public JFreeChart createLineChart() {
DefaultCategoryDataset dataset = getJdDataSet();
JFreeChart chart = ChartFactory.createLineChart("XX省上半年肉类销量统计图", "XX省",
"销量", dataset, PlotOrientation.VERTICAL, true, true, false);
// 数据区设置
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.white); // 数据区背景色
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// 是否显示零点
rangeAxis.setAutoRangeIncludesZero(false);
// 数据轴上(右)边距
rangeAxis.setUpperMargin(0.02);
// Y轴名称的倾斜角度
rangeAxis.setLabelAngle(0.3);
// 设置数据轴的数据范围
rangeAxis.setRange(new Range(0, 1000));
// 设置刻度波动值(步长)
rangeAxis.setTickUnit(new NumberTickUnit(102));
// 拆线线设置
// 显示数据
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
// 设置曲线样式
renderer.setPaint(Color.GREEN);
renderer.setItemLabelsVisible(true);
renderer.setShapesVisible(true);
return chart;
}
public static void main(String ...Strings) {
LineChartTest p = new LineChartTest();
JFreeChart chart = p.createLineChart();
ChartFrame frame = new ChartFrame("XX省上半年肉类销量统计图", chart);
frame.pack();
frame.setVisible(true);
System.out.println("ok");
}
}
//==============end===================================================
这样一来,拆线中间缺了一个口子,很不美观(如附件中的缺口图)。
请教大家,代码应该怎样改才能得到如附件中效果,把缺口部分用虚线连接,然后标明为缺口。 这样的问题相信用过JFreeChart 朋友都碰到过。
还有些比如:怎样标记出拆线图中的最高,最低点及均值点等一些特殊位置?
请大家积极讨论,谢谢啦!
//========代码开始======================================================
import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* JfreeChart 单线图
* @author Administrator
*
* @date:2008-07-07
*
*/
public class LineChartTest {
/**
* 获取简单数据集对象
* @return dataset
*/
public DefaultCategoryDataset getJdDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "猪肉", "一月");
dataset.addValue(200, "猪肉", "二月");
dataset.addValue(800, "猪肉", "三月");
dataset.addValue(null, "猪肉", "四月");
dataset.addValue(600, "猪肉", "五月");
dataset.addValue(900, "猪肉", "六月");
return dataset;
}
/**
* 创建图表主对象JFreechart,并设置图像显示
* @return JFreeChart
*/
public JFreeChart createLineChart() {
DefaultCategoryDataset dataset = getJdDataSet();
JFreeChart chart = ChartFactory.createLineChart("XX省上半年肉类销量统计图", "XX省",
"销量", dataset, PlotOrientation.VERTICAL, true, true, false);
// 数据区设置
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.white); // 数据区背景色
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// 是否显示零点
rangeAxis.setAutoRangeIncludesZero(false);
// 数据轴上(右)边距
rangeAxis.setUpperMargin(0.02);
// Y轴名称的倾斜角度
rangeAxis.setLabelAngle(0.3);
// 设置数据轴的数据范围
rangeAxis.setRange(new Range(0, 1000));
// 设置刻度波动值(步长)
rangeAxis.setTickUnit(new NumberTickUnit(102));
// 拆线线设置
// 显示数据
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
// 设置曲线样式
renderer.setPaint(Color.GREEN);
renderer.setItemLabelsVisible(true);
renderer.setShapesVisible(true);
return chart;
}
public static void main(String ...Strings) {
LineChartTest p = new LineChartTest();
JFreeChart chart = p.createLineChart();
ChartFrame frame = new ChartFrame("XX省上半年肉类销量统计图", chart);
frame.pack();
frame.setVisible(true);
System.out.println("ok");
}
}
//==============end===================================================
楼主【werwhyuy】截止到2008-07-14 21:33:17的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
谢谢了!!!