android-graphview使用setNumVerticalLabels显示错误的图形

时间:2013-08-30 12:37:46

标签: android-graphview

我测试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轴?

2 个答案:

答案 0 :(得分:0)

行:

graphView.setVerticalLabels( new String[]{"4","3","2","1","0"});

您将静态标签设置为图表。因此,垂直标签(y值)不再与数据相关联。

此行用于动态标签。您可以修改将生成的标签的数量。

graphView.getGraphViewStyle().setNumVerticalLabels(5);

但是你使用的是静态标签,所以这条线没有意义。

答案 1 :(得分:0)

http://android-graphview.org/

访问此页面并滚动到本教程的自定义标签格式化程序部分。

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值