我正在显示一张漂亮的图表,里面有两个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个数据点。例如:
我还尝试添加24个数据点,其中23个Y值为0且只有一个(在X位置5)Y值为100.因为这是一个CUBIC折线图,我的光标显示为“高跟鞋” “在它的底部;其他23个点上的光标也可以在图表的底部看到。例如:
我尝试将相邻数据点设置为X值+/- 0.00001,但这并不会删除高跟鞋 - 无论我们设置它们的水平位置离水平位置有多近,它都会跟它们一样小。< / p>
我在最后一个小时左右一直在玩这个,但我无法显示一条简单的垂直线。有什么想法吗?
答案 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位置。
基本上,我正在做的是将图的底部和顶部绘制到图表之外,使得可见部分是直线部分。所以这仍然有底部的“高跟鞋”等。但由于我不允许缩放或平移,所以这些东西都是隐藏的,因此它运作良好。
如果有人有更好的解决方案,那就太好了。我要去洗个冷水澡......