JFreeChart - 在XYPlot中标记线移动的方向

时间:2013-07-23 16:33:06

标签: java jfreechart

我正在制作一个处理大量2D数据的程序。我在XYPlot中显示这些数据。有什么方法可以标记线在哪个方向随时间移动?数据在整个情节中反弹,但需要按特定顺序排列,因此散点图对我不起作用。

编辑:澄清 - X轴或Y轴都不是时间。这是一个参数图。

1 个答案:

答案 0 :(得分:2)

我发现了一种可能的解决方案。它需要一些工作来使它看起来正确,但它现在有效。

JFreeChart中有一个名为XYPointerAnnotation的类,它允许您向自定义角度,长度和宽度的图表添加箭头。我仍然试图把课程弄清楚,但到目前为止它似乎对我的目的做得很好。附加代码:

for (int i = 0;i < data.getItemCount(0) - 1;i++)
    {
    double x1 = data.getSeries(0).getDataItem(i).getXValue();
    double x2 = data.getSeries(0).getDataItem(i + 1).getXValue();

    double y1 = data.getSeries(0).getDataItem(i).getYValue();
    double y2 = data.getSeries(0).getDataItem(i + 1).getYValue();

    double angle = Math.atan2(y1 - y2, x2 - x1) + Math.PI;
    XYPointerAnnotation arrow = new XYPointerAnnotation("",x1,y1,angle);

    if (i == 0)
        {
        arrow.setText("Start");
        }
    else if (i % 5 == 0)
        {
        arrow.setText(Integer.toString(i));
        }

    arrow.setLabelOffset(15.0);
    arrow.setToolTipText(Integer.toString(i));
    _originalPlot.addAnnotation(arrow);
    }