平时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===================================================

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【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
      

  2.   

    楼主 我现在学习这个jfreechar   你有没有现成的代码发给我吗?  让我也学习学习!!! QQ 365328730
    谢谢了!!!