1,在JFreeChart中我使用 ChartFactory.createTimeSeriesChart 创建线图。我构建的Dataset的时间是中间隔段的比如说  {9:00,9:01,9:03,9:10,9:11,9:12,9:13.......} 其中9:03~9:10的数据是没有的,但是使用 ChartFactory.createTimeSeriesChart 创建线图的时候他会自动补全,所以线图就不正确了。请问有什么方法可以使中间这段线图不显示出来,其他的正常连续的都显示出来。谢谢。2,还有个问题就是能否先打出X坐标然后等有数据时候再打线图?

解决方案 »

  1.   

    有碰过这种问题
    第一个找不出有效解决办法,最后只能用 ChartFactory.createLineChart 方法,自定义X轴的显示. 第二种根也正等待高手解决,汗~~
      

  2.   

    1、第一个可以采用 add(Time, null) null表示中断  详细可以参考例子中的TimeSeriesDemo2.java2、第二个 完全可以参考 DynamicDataDemo1.java不知道适合满足你的要求
      

  3.   

    to zengguojian()  您好:
       TimeSeriesDemo2.java这个例子线是不连续的。我是想在时间段不连续的情况下线还是连续的。比如说股票在中午12:00到1:30这段时间是没有数据的。在图上是不能显示出来的。
    请问可以如何做呢?
      

  4.   

    自定义X轴的例子,你参考下,看有没有帮助<%@ page contentType="text/html;charset=UTF-8"%>
    <%@ page import="org.jfree.data.category.DefaultCategoryDataset"%>
    <%@ page import="org.jfree.data.general.Dataset"%>
    <%@ page import="org.jfree.chart.ChartFactory"%>
    <%@ page import="org.jfree.chart.ChartPanel"%>
    <%@ page import="org.jfree.chart.JFreeChart"%>
    <%@ page import="org.jfree.chart.plot.CategoryPlot"%>
    <%@ page import="org.jfree.chart.plot.PlotOrientation"%>
    <%@ page import="org.jfree.chart.axis.NumberAxis"%>
    <%@ page import="org.jfree.chart.renderer.category.BarRenderer"%>
    <%@ page import="org.jfree.data.category.CategoryDataset"%>
    <%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
    <%@ page import="org.jfree.ui.ApplicationFrame"%>
    <%@ page import="org.jfree.ui.RefineryUtilities"%>
    <%@ page import="java.awt.Color"%>
    <%@ page import="java.awt.Dimension"%>
    <%@ page import="java.awt.GradientPaint"%>
    <%@ page import="org.jfree.chart.axis.CategoryAxis"%>
    <%@ page import="org.jfree.chart.axis.CategoryLabelPositions"%>
    <%@ page import="org.jfree.chart.axis.NumberAxis"%>
     
    <%request.setCharacterEncoding("utf-8"); %>
    <%
     
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
     
            // row keys...
        //加入單元
        String[] unit ={"Company","Product & Solution","Service & Support","Partner","New & Events","Discussion","Online Vote","E-Paper"};
     
            // column keys...
        //加入月份
        String[] month ={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
        
        //點閱率
        int[][] viewcount ={{52,24,120,55,38,98,74,81},
                  {23,12,58,11,20,5,87,60},
                  {23,12,58,11,20,5,87,60},
                  {46,12,58,11,20,5,87,60},
                  {7,12,58,11,20,5,87,60},
                  {98,12,58,11,20,5,87,60},
                  {45,12,58,11,20,5,87,60},
                  {88,12,58,11,20,5,87,60},
                  {23,12,58,11,20,5,87,60},
                  {66,12,58,11,20,5,87,60},
                  {85,12,58,11,20,5,87,60},
                  {12,12,58,11,20,5,87,60},
                  };
     
        for(int j=0;j<=11;j++){
          for(int i=0;i<=7;i++){
            dataset.addValue(viewcount[j][i],month[j],unit[i]);
          }
        }
     
            JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Demo",         // 圖表名稱
                "Category",               // X 坐標
                "Value",                  // Y 坐標
                dataset,                  // 資料
                PlotOrientation.VERTICAL, // 定位方向
                true,                     // 包括說明
                true,                     // tooltips?
                false                     // URLs?
            );
        
        // 設定背景顏色...
            chart.setBackgroundPaint(Color.white);
     
        // get a reference to the plot for further customisation...
            CategoryPlot plot = chart.getCategoryPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
            plot.setDomainGridlinesVisible(true);
            plot.setRangeGridlinePaint(Color.white);
        
     
            // set the range axis to display integers only...
            final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
            rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
     
            // disable bar outlines...
            BarRenderer renderer = (BarRenderer) plot.getRenderer();
            renderer.setDrawBarOutline(false);
     
            // 加入漸層色...
            GradientPaint gp0 = new GradientPaint(
                0.0f, 0.0f, Color.blue, 
                0.0f, 0.0f, new Color(0, 0, 64)
            );
            GradientPaint gp1 = new GradientPaint(
                0.0f, 0.0f, Color.green, 
                0.0f, 0.0f, new Color(0, 64, 0)
            );
            GradientPaint gp2 = new GradientPaint(
                0.0f, 0.0f, Color.red, 
                0.0f, 0.0f, new Color(64, 0, 0)
            );
            renderer.setSeriesPaint(0, gp0);
            renderer.setSeriesPaint(1, gp1);
            renderer.setSeriesPaint(2, gp2);
        
        // 設定 X 軸欄位傾斜度
        CategoryAxis domainAxis = plot.getDomainAxis();
            domainAxis.setCategoryLabelPositions(
                CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
            );
     
        
        String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
        String graphURL = request.getContextPath()+ "/servlet/DisplayChart?filename=" + filename;
     
    %>
     
    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <P ALIGN="CENTER">
    <img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
    </P>
    </BODY>
    </HTML>
      

  5.   

    先谢谢章鱼,好像有点不对。请看我的代码。package demo;
    import java.awt.Color;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.axis.ValueAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;public class LineChartDemo2 extends java.applet.Applet { private static final String[] time = { "09:00", "09:01", "09:02", "09:03", "09:04", "09:05",
    "09:06", "09:07", "09:08", "09:09", "09:10", "09:11", "09:12",
    "09:13", "09:14", "09:15", "09:16", "09:17", "09:18", "09:19",
    "09:20", "09:21", "09:22", "09:23", "09:24", "09:25", "09:26",
    "09:27", "09:28", "09:29", "09:30", "09:31", "09:32", "09:33",
    "09:34", "09:35", "09:36", "09:37", "09:38", "09:39", "09:40",
    "09:41", "09:42", "09:43", "09:44", "09:45", "09:46", "09:47",
    "09:48", "09:49", "09:50", "09:51", "09:52", "09:53", "09:54",
    "09:55", "09:56", "09:57", "09:58", "09:59", "10:00", "10:01",
    "10:02", "10:03", "10:04", "10:05", "10:06", "10:07", "10:08",
    "10:09", "10:10", "10:11", "10:12", "10:13", "10:14", "10:15",
    "10:16", "10:17", "10:18", "10:19", "10:20", "10:21", "10:22",
    "10:23", "10:24", "10:25", "10:26", "10:27", "10:28", "10:29",
    "10:30", "10:31", "10:32", "10:33", "10:34", "10:35", "10:36",
    "10:37", "10:38", "10:39", "10:40", "10:41", "10:42", "10:43",
    "10:44", "10:45", "10:46", "10:47", "10:48", "10:49", "10:50",
    "10:51", "10:52", "10:53", "10:54", "10:55", "10:56", "10:57",
    "10:58", "10:59", "11:00", "11:01", "11:02", "11:03", "11:04",
    "11:05", "11:06", "11:07", "11:08", "11:09", "11:10", "11:11",
    "11:12", "11:13", "11:14", "11:15", "11:16", "11:17", "11:18",
    "11:19", "11:20", "11:21", "11:22", "11:23", "11:24", "11:25",
    "11:26", "11:27", "11:28", "11:29", "11:30", "11:31", "11:32",
    "11:33", "11:34", "11:35", "11:36", "11:37", "11:38", "11:39",
    "11:40", "11:41", "11:42", "11:43", "11:44", "11:45", "11:46",
    "11:47", "11:48", "11:49", "11:50", "11:51", "11:52", "11:53",
    "11:54", "11:55", "11:56", "11:57", "11:58", "11:59", "13:30",
    "13:31", "13:32", "13:33", "13:34", "13:35", "13:36", "13:37",
    "13:38", "13:39", "13:40", "13:41", "13:42", "13:43", "13:44",
    "13:45", "13:46", "13:47", "13:48", "13:49", "13:50", "13:51",
    "13:52", "13:53", "13:54", "13:55", "13:56", "13:57", "13:58",
    "13:59", "14:00", "14:01", "14:02", "14:03", "14:04", "14:05",
    "14:06", "14:07", "14:08", "14:09", "14:10", "14:11", "14:12",
    "14:13", "14:14", "14:15", "14:16", "14:17", "14:18", "14:19",
    "14:20", "14:21", "14:22", "14:23", "14:24", "14:25", "14:26",
    "14:27", "14:28", "14:29", "14:30", "14:31", "14:32", "14:33",
    "14:34", "14:35", "14:36", "14:37", "14:38", "14:39", "14:40",
    "14:41", "14:42", "14:43", "14:44", "14:45", "14:46", "14:47",
    "14:48", "14:49", "14:50", "14:51", "14:52", "14:53", "14:54",
    "14:55", "14:56", "14:57", "14:58", "14:59", "15:00", "15:01",
    "15:02", "15:03", "15:04", "15:05", "15:06", "15:07", "15:08",
    "15:09", "15:10", "15:11", "15:12", "15:13", "15:14", "15:15",
    "15:16", "15:17", "15:18", "15:19", "15:20", "15:21", "15:22",
    "15:23", "15:24", "15:25", "15:26", "15:27", "15:28", "15:29" };
    private static final double[] value1 = { 322642, 322642, 322642, 322642, 322642, 322642,
    322642, 322642, 322642, 322642, 322642, 322642, 322642, 322642,
    322642, 322642, 322642, 322642, 322642, 322642, 322642, 322642,
    322642, 322642, 322642, 322642, 322642, 322642, 322642, 322642,
    322202, 317288, 313730, 308564, 303850, 299100, 296122, 295060,
    293286, 287378, 285446, 284594, 283848, 280202, 276364, 274716,
    272656, 266744, 265920, 265816, 265288, 264734, 263618, 263192,
    262498, 262172, 261968, 260744, 260056, 259950, 259434, 258408,
    257304, 256180, 254076, 252454, 251822, 251552, 251164, 250434,
    250218, 248968, 248582, 248292, 246112, 243718, 242986, 240772,
    236124, 230568, 226802, 223332, 221818, 221674, 220796, 220116,
    220040, 219210, 218348, 217944, 217540, 216066, 215258, 214212,
    213222, 212604, 212198, 211042, 210344, 208996, 206196, 204808,
    204240, 202996, 200572, 198326, 197798, 197710, 197402, 196932,
    196706, 196520, 196230, 195868, 195244, 194662, 194612, 193812,
    192798, 191946, 191364, 191364, 191364, 191364, 191364, 191364,
    191364, 191364, 191364, 191364, 191364, 191364, 191364, 191364,
    191364, 191364, 191364, 191364, 191364, 191364, 191364, 191364,
    191364, 191364, 191364, 191364, 191364, 191364, 191364, 191364,
    191130, 190416, 190128, 190022, 189294, 189186, 189038, 188968,
    188202, 188054, 187802, 187312, 187098, 186402, 185982, 185762,
    185480, 183192, 182540, 181748, 181558, 180950, 179086, 178570,
    177886, 177378, 177108, 176696, 176448, 175502, 175218, 174574,
    173818, 173090, 172842, 171980, 170680, 168898, 165804, 162564,
    161950, 161140, 159776, 153816, 148694, 148046, 147798, 147056,
    146888, 146472, 145824, 145488, 144888, 144426, 143658, 143058,
    142118, 141346, 140006, 138452, 137402, 137402, 137402, 137402,
    137402, 137402, 137402, 137402, 137402, 137402, 137402, 137402,
    137402, 137402, 137402, 137240, 136490, 135736, 135312, 134602,
    133650, 131994, 130438, 125534, 122964, 121244, 120754, 117340,
    115912, 115444, 115406, 115162, 114350, 113212, 111970, 110646,
    109752, 108776, 106720, 105790, 104290, 102544, 100206, 98220,
    96622, 95308, 90114, 88814, 85154, 79706, 78928, 78418, 77476,
    76004, 74278, 71748, 71044, 68688, 64636, 63114, 61408, 60262,
    57238, 54326, 50822, 47742, 45540, 44016, 43028, 40284, 38204,
    36632, 34962, 32628, 32604, 31942, 31056, 29616, 29238, 28862,
    28262, 25946, 25076, 24494, 23574, 20864, 18324, 13636, 10152,
    5272 };

    private static CategoryDataset createDataset() {
    DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
    for (int i = 0; i < time.length; i++) {
    defaultcategorydataset.addValue(value1[i], "Test", time[i]);
    }
    return defaultcategorydataset;
    } private static JFreeChart createChart(CategoryDataset categorydataset) {
    JFreeChart jfreechart = ChartFactory.createLineChart(
    "test1", "test2", "test3",
    categorydataset, PlotOrientation.VERTICAL, false, true, false);
    jfreechart.setBackgroundPaint(new GradientPaint(0, 0, Color.white,
    1200, 0, Color.white));
    return jfreechart;
    }
    public void paint(Graphics g)
    {
    JFreeChart jfreechart = createChart(createDataset());
            if (jfreechart != null) {
             jfreechart.draw((Graphics2D) g, getBounds());
                
            }
    } // 消除闪烁
    public void update(Graphics g) {
    paint(g);
    }

    }