1

我测试了 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)
    });

最大值为三(抱歉,我无法发布图像)并且所有其他坐标都是正确的。

如果我添加这些行

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

LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
layout.addView(graphView);

在更改 y 轴的代码中,我得到一个图,其中最大值不是三,而是四。并且所有其他坐标在 y 值中都是错误的。

为什么整个图形会发生变化,而不仅仅是 y 轴?

4

2 回答 2

0

与行:

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

您为图形设置静态标签。因此垂直标签(y 值)不再与数据链接。

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

graphView.getGraphViewStyle().setNumVerticalLabels(5);

但是您使用的是静态标签,因此该行没有意义。

于 2013-09-02T10:04:08.377 回答
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 值与您提供的静态垂直标签映射

于 2014-01-20T21:19:05.283 回答