5

随着 AndroidPlot 网站的关闭,我有点陷入这个问题。已经问了几个类似的问题,但没有一个得到正确的回答,所以我开始了。

我想知道如何重新标记我的 X 轴。例如,如果我想绘制有关每月数据的值,我会像(1, 82)Januari、(2,67)Februari 等那样绘制它。之后,我想将 X-labels 从 更改[1, 2, 3, ...]x_labels = ["Januari", "Februari", ...]。我怎样才能做到这一点?

哦,请提供一个x_labels可以是任何东西的答案(如果有每月标签的特定方法,你永远不知道)。

有谁能帮忙吗?谢谢!

4

2 回答 2

8

我自己想通了:

this.getGraphWidget().setDomainValueFormat(new GraphXLabelFormat());

// ...

private class GraphXLabelFormat extends Format {

    private static LABELS = ["Label 1", "Label 2", "Label 3"];

    @Override
    public StringBuffer format(Object object, StringBuffer buffer, FieldPosition field) {
        int parsedInt = Math.round(Float.parseFloat(object.toString()));
        String labelString = = LABELS[parsedInt];

        buffer.append(labelString);
        return buffer;
    }

    @Override
    public Object parseObject(String string, ParsePosition position) {
        return java.util.Arrays.asList(LABELS).indexOf(string);
    }
}
于 2012-05-27T00:46:29.887 回答
3

我使用了@Aegonis 编写的代码,并为设置String标签制作了完整的代码。

我在我的案例中使用了这 3 个数组。

Number[] yValues = {1, 3, 2 ,7 ,6};
Number[] xValues = {0, 1, 2, 3, 4};

final String[] xLabels = {"Jan", "Feb", "Mar", "Apr", "May"};

现在是Format@Aegonis 提供的扩展类的代码。

class GraphXLabelFormat extends Format {

    @Override
    public StringBuffer format(Object arg0, StringBuffer arg1, FieldPosition arg2) {
        // TODO Auto-generated method stub

        int parsedInt = Math.round(Float.parseFloat(arg0.toString()));
        Log.d("test", parsedInt + " " + arg1 + " " + arg2);
        String labelString = xLabels[parsedInt];
        arg1.append(labelString);
        return arg1;
    }

    @Override
    public Object parseObject(String arg0, ParsePosition arg1) {
        // TODO Auto-generated method stub
        return java.util.Arrays.asList(xLabels).indexOf(arg0);
    }
}

现在来自onCreate方法的代码。

XYPlot plot = (XYPlot) findViewById(R.id.mySimpleXYPlot);

plot.setDomainLabel("TestDomain");
plot.setRangeLabel("TestRange");
plot.setTitle("Height/Weight");

//set domain labels as string [x-axis]
plot.getGraphWidget().setDomainValueFormat(new GraphXLabelFormat());

XYSeries series = new SimpleXYSeries(Arrays.asList(xValues), Arrays.asList(yValues), "Line");

plot.addSeries(series, new LineAndPointFormatter());
于 2014-01-13T12:24:50.820 回答