JFreeChart用这个想做拆线图,但现在问题是网上找到做拆线图的例子是单拆线的。我想在一张图片上,画5个拆线。即代表5种不同的数据走向。有没有兄弟弄过这方面的。时间比较急,所以上来向兄弟请教一下。玩过这方面的兄弟,给点提示或代码参考。谢谢!

解决方案 »

  1.   

    我记得这里有个帖子是弄Jfchart的复合图表,你在去官网上去看看!
      

  2.   

    我的项目也需要图标统计的,前几天找资料,找到这个,也关于JFreeChart
    http://www.ibm.com/developerworks/cn/java/l-jfreechart/
    看看能不能帮到你。
      

  3.   

    应该在dataset里面增加就可以的。
      

  4.   

    我刚才去官网看了一下有这种复合型的例子,还有这个帖子你可以去看看 http://aojuan.javaeye.com/blog/294019
      

  5.   

    是啊,中间的样式设定好了,就是填充dataset ,上面几个帖子你参考一下
      

  6.   

    这个你可以下载来看看 http://www.jfree.org/jfreechart/samples.html
      

  7.   

    我要的就是他这个例子上的 line charts下面的LineChartDemo2这个例子,怎么才能直接看源代码 呢,是不是要花钱买呢。
      

  8.   

    一条折线图一维数组   多条线就是多维数组  只是改变dataset换了一下
      

  9.   

    不用,在例子的最上面有个 链接直接点一下,就能在 JAVA控制台里 看见所有的例子和代码啦
      

  10.   


    刚才说错了。看了下是收费。你看看这个
    package edu.ucla.stat.SOCR.chart.demo;import edu.ucla.stat.SOCR.chart.ChartGenerator_JTable;
    import edu.ucla.stat.SOCR.chart.SuperXYChart;
    import edu.ucla.stat.SOCR.chart.gui.SOCRXYSeriesLabelGenerator;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
    import org.jfree.data.xy.XYDataset;
    import org.jfree.data.xy.XYSeries;
    import org.jfree.data.xy.XYSeriesCollection;
    import org.jfree.ui.RectangleInsets;
    import java.awt.*;
    import java.beans.PropertyChangeListener;/** 
     * A simple demonstration application showing how to create a line chart using
     * data from an {@link XYDataset}. 
     *  
     */
    public class LineChartDemo2 extends SuperXYChart implements
    PropertyChangeListener {
    public void init() {
    turnLegendPanelOn();
    super.init();
    } public void doTest() {
    JFreeChart chart;
    ChartGenerator_JTable chartMaker = new ChartGenerator_JTable();
    resetChart();
    showMessageDialog(chartTitle + " doTest get called!");
    int no_series = (dataTable.getColumnCount() - 2) / 2;
    int[][] pairs = new int[no_series][2];
    for (int i = 0; i < no_series; i++) {
    pairs[i][0] = 2 * i; //column x                        
    pairs[i][1] = 2 * i + 1; //column y              
    }
    chart = chartMaker.getXYChart("Line", chartTitle, "X", "Y", dataTable,
    no_series, pairs, "");
    chartPanel = new ChartPanel(chart, false);
    setChart();
    } /**      
     * Creates a sample dataset.     
     * @param isDemo true use the demo data, false use data from the JTable     
     * @return a sample dataset.     
     */
    protected XYDataset createDataset(boolean isDemo) {
    if (isDemo) {

    XYSeries series1 = new XYSeries("First");
    series1.add(1.0, 1.0);
    series1.add(2.0, 4.0);
    series1.add(3.0, 3.0);
    series1.add(4.0, 5.0);
    series1.add(5.0, 5.0);
    series1.add(6.0, 7.0);
    series1.add(7.0, 7.0);
    series1.add(8.0, 8.0);

    XYSeries series2 = new XYSeries("Second");
    series2.add(1.0, 5.0);
    series2.add(2.0, 7.0);
    series2.add(3.0, 6.0);
    series2.add(4.0, 8.0);
    series2.add(5.0, 4.0);
    series2.add(6.0, 4.0);
    series2.add(7.0, 2.0);
    series2.add(8.0, 1.0);

    XYSeries series3 = new XYSeries("Third");
    series3.add(3.0, 4.0);
    series3.add(4.0, 3.0);
    series3.add(5.0, 2.0);
    series3.add(6.0, 3.0);
    series3.add(7.0, 6.0);
    series3.add(8.0, 3.0);
    series3.add(9.0, 4.0);
    series3.add(10.0, 3.0);

    XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(series1);
    dataset.addSeries(series2);
    dataset.addSeries(series3);
    return dataset;
    } else
    return super.createDataset(false);
    } /**      
     * Creates a chart.      
     *      
     * @param dataset  the data for the chart.   
     *     
     * @return a chart.    
     */
    protected JFreeChart createChart(XYDataset dataset) {
    // create the chart...        
    JFreeChart chart = ChartFactory.createXYLineChart(chartTitle, // chart title             
    "X", // x axis label            
    "Y", // y axis label             
    dataset, // data            
    PlotOrientation.VERTICAL, !legendPanelOn, // include legend             
    true, // tooltips             
    false // urls        
    );
    // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...        
    chart.setBackgroundPaint(Color.white);
    // get a reference to the plot for further customisation... 
    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setBackgroundPaint(Color.lightGray);
    plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot
    .getRenderer();
    renderer.setBaseShapesVisible(true);
    renderer.setBaseShapesFilled(true);
    renderer.setLegendItemLabelGenerator(new SOCRXYSeriesLabelGenerator());
    // change the auto tick unit selection to integer units only...         
    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    // OPTIONAL CUSTOMISATION COMPLETED.                  
    setXSummary(dataset);
    return chart;
    }
    }