我测试android-graphview库,我发现这种行为: 我使用最新的GraphViewDemos和第一个SimpleGraph示例。它显示了具有正确数据的线图。 (y轴值为1,2,3)
GraphViewSeries exampleSeries = new GraphViewSeries(new GraphViewData[] {
new GraphViewData(1, 2.0d)
, new GraphViewData(2, 1.5d)
, new GraphViewData(2.5, 3.0d) // another frequency
, new GraphViewData(3, 2.5d)
, new GraphViewData(4, 1.0d)
, new GraphViewData(5, 3.0d)
});
最大值为3(抱歉,我无法发布图像),所有其他坐标都正确。
如果我添加这些行
graphView.getGraphViewStyle().setNumVerticalLabels(5);
graphView.setVerticalLabels( new String[]{"4","3","2","1","0"});
前
LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
layout.addView(graphView);
在更改y轴的代码中,我得到一个图表,其中max-value不是三,它是四。并且所有其他坐标在y值中都是错误的。
为什么完整的图表会改变而不仅仅是y轴?
答案 0 :(得分:0)
行:
graphView.setVerticalLabels( new String[]{"4","3","2","1","0"});
您将静态标签设置为图表。因此,垂直标签(y值)不再与数据相关联。
此行用于动态标签。您可以修改将生成的标签的数量。
graphView.getGraphViewStyle().setNumVerticalLabels(5);
但是你使用的是静态标签,所以这条线没有意义。
答案 1 :(得分:0)
访问此页面并滚动到本教程的自定义标签格式化程序部分。
GraphView graphView = new LineGraphView(this, "example");
graphView.setCustomLabelFormatter(new CustomLabelFormatter() {
@Override
public String formatLabel(double value, boolean isValueX) {
if (isValueX) {
if (value < 5) {
return "small";
} else if (value < 15) {
return "middle";
} else {
return "big";
}
}
return null; // let graphview generate Y-axis label for us
}
});
基本上,您必须使用您提供的静态垂直标签映射实际的y值