如何在CubicLineChart上绘制垂直线?

时间:2013-03-27 03:09:44

标签: android achartengine

我正在显示一张漂亮的图表,里面有两个XYSeries。每个系列有24个值,在0到23的X位置绘制。一个系列显示24小时内的温度,另一个系列显示同一24小时内的降水概率。

当我尝试添加第三个系列来绘制单个垂直线(用作“光标”,以及OnTouchListener)时出现问题。我的想法是绘制一个2数据点系列,它将呈现为一条垂直线,我可以将其用于光标。

我试过了:

XYSeries cursorLine = new XYSeries("", 2);
cursorLine.add(5, 0);
cursorLine.add(5, 100);
dataset.addSeries(cursorLine);

虽然没有显示任何内容。

我也试过使用ACE的Dan在this Google Group post中建议的两个非常接近的X值:

XYSeries cursorLine = new XYSeries("", 2);
cursorLine.add(5.00000, 0);
cursorLine.add(5.00001, 100);
dataset.addSeries(cursorLine);

不幸的是,这会在图表的整个宽度上拉伸“光标”线,就像它假设它由24个数据点组成而不仅仅是我指定的2个数据点。例如:

enter image description here

我还尝试添加24个数据点,其中23个Y值为0且只有一个(在X位置5)Y值为100.因为这是一个CUBIC折线图,我的光标显示为“高跟鞋” “在它的底部;其他23个点上的光标也可以在图表的底部看到。例如:

Shows heels of cursor line

我尝试将相邻数据点设置为X值+/- 0.00001,但这并不会删除高跟鞋 - 无论我们设置它们的水平位置离水平位置有多近,它都会跟它们一样小。< / p>

我在最后一个小时左右一直在玩这个,但我无法显示一条简单的垂直线。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题似乎是您使用scale = 2作为垂直线系列。每个比例计算可见数据范围并尝试拟合数据,例如它完全显示。我建议您将垂直线数据添加到已存在的比例中。

答案 1 :(得分:0)

我终于想出了一些有用的东西,因为它显示了一条直线垂直线。感觉非常非常脏,但这是代码:

double x = 5;

for(double i = 0; i < 24; i++)
{
    if(i != x)
    {
        cursorLine.add(i, -100);
    }
    else
    {
        cursorLine.add(x - 0.000001, -100);
        cursorLine.add(x, 200);
        cursorLine.add(x + 0.000001, -100);
    }
}

x可以设置为绘制光标的X位置。

基本上,我正在做的是将图的底部和顶部绘制到图表之外,使得可见部分是直线部分。所以这仍然有底部的“高跟鞋”等。但由于我不允许缩放或平移,所以这些东西都是隐藏的,因此它运作良好。

如果有人有更好的解决方案,那就太好了。我要去洗个冷水澡......