Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JFreeChart中不绘制时间序列的分段?_Java_Graph_Jfreechart - Fatal编程技术网

Java 如何在JFreeChart中不绘制时间序列的分段?

Java 如何在JFreeChart中不绘制时间序列的分段?,java,graph,jfreechart,Java,Graph,Jfreechart,我们试图不在timeseries jFreeChart中绘制某些片段 我尝试过这个解决方案,但对我来说,数据集总是空的,所以不确定我做错了什么。 这是一个带有间隙的图形示例,我们希望连接线不渲染,或者至少是一条虚线。 以下是我尝试过的代码: XYLineAndShapeRenderer minuteRenderer = new XYLineAndShapeRenderer() { Stroke solid = new BasicStroke(2.0f); @Override

我们试图不在timeseries jFreeChart中绘制某些片段

我尝试过这个解决方案,但对我来说,数据集总是空的,所以不确定我做错了什么。

这是一个带有间隙的图形示例,我们希望连接线不渲染,或者至少是一条虚线。 以下是我尝试过的代码:

XYLineAndShapeRenderer minuteRenderer = new XYLineAndShapeRenderer() {
    Stroke solid = new BasicStroke(2.0f);
    @Override
    public Stroke getItemStroke(int row, int column) {
        if (dataset == null) {
            System.out.println("why am I null?");
            return solid;
        }
    }
};
有人能提供建议吗

更新:添加周围代码以进行澄清。注意:我有一个有效的数据集,因为它正在打印,但我的渲染器似乎没有引用它。当发生这种类型的覆盖时,可能需要执行一些操作来将渲染器链接到数据集

    // ~~ Plot the Minute Average Data (avg, min, max)
    plot.setDataset(MINUTE_DATA, getMinuteDataset());
    plot.mapDatasetToRangeAxis(MINUTE_DATA, FILL_RANGE_AXIS);
    //XYLineAndShapeRenderer minuteRenderer = new XYLineAndShapeRenderer();
    XYLineAndShapeRenderer minuteRenderer = new XYLineAndShapeRenderer() {
        @Override
        public Paint getItemPaint(int row, int col) {
            System.out.println("get item paint");

            Paint cpaint = getItemColor(row, col);
            if (cpaint == null) {
                cpaint = super.getItemPaint(row, col);
            }
            return cpaint;
        }

        public Color getItemColor(int row, int col) {
            System.out.println(col + "," + dataset.getY(row, col));
            double y = dataset.getYValue(row, col);
            if(y<=3) return Color.black;
            if(y<=4) return Color.green;;
            if(y<=5) return Color.red;;
            if(y<=6) return Color.yellow;;
            if(y<=10) return Color.orange;;
            return null;
        }

        @Override
        protected void drawFirstPassShape(Graphics2D g2, int pass, int series,
            int item, Shape shape) {
            System.out.println("drawing first pass shape");

            g2.setStroke(getItemStroke(series, item));
            Color c1 = getItemColor(series, item);
            Color c2 = getItemColor(series, item - 1);
            GradientPaint linePaint = new GradientPaint(0, 0, c1, 0, 300, c2);
            g2.setPaint(linePaint);
            g2.draw(shape);
        }
    };
    minuteRenderer.setSeriesShapesVisible(0, false);
    minuteRenderer.setSeriesShapesVisible(1, false);
    minuteRenderer.setSeriesShapesVisible(2, false);
    minuteRenderer.setSeriesPaint(0, XBLUE);
    minuteRenderer.setSeriesPaint(1, DODGER_BLUE);
    minuteRenderer.setSeriesPaint(2, DODGER_BLUE);
    plot.setRenderer(MINUTE_DATA, minuteRenderer);

如果数据集为空…

是否尝试使用毫秒?对于虚线check@HithamS.AlQadheeb,我不确定使用毫秒的含义。你链接的问题正是我从中得到的我正在尝试的例子。我在我的OP中链接了它。你能,请,发布完整的代码来用数据集复制吗?你可以覆盖
drawFirstPassShape()
像.@HithamS.AlQadheeb我已经用新的覆盖更新了,仍然得到一个空指针。你试过用毫秒吗?对于虚线check@HithamS.AlQadheeb,我不确定使用毫秒的含义。你链接的问题正是我从中得到的我正在尝试的例子。我在我的OP中链接了它。你能,请,发布完整的代码来用数据集复制吗?你可以覆盖
drawFirstPassShape()
像.@HithamS.AlQadheeb我已经用新的覆盖更新了,仍然得到一个空指针。
SEVERE: Uncaught exception thrown in java.awt.EventDispatchThread, thread: 14-AWT-EventQueue-0
java.lang.NullPointerException
    at filtec.gui.widgets.fmsqa.FmsLtaChartPanel$1.getItemColor(FmsLtaChartPanel.java:234)