AndroidPlot:在X轴上设置标签

时间:2012-05-26 22:19:27

标签: android androidplot

随着AndroidPlot网站的关闭,我有点陷入这个问题。已经提出了几个类似的问题,但没有一个得到适当的回答,所以我在这里。

我想知道如何重新标记我的X轴。例如,如果我想绘制关于月度数据的值,我会将其绘制为Januari的(1, 82),Februari的(2,67),依此类推。之后,我想将X标签从[1, 2, 3, ...]更改为x_labels = ["Januari", "Februari", ...]。我怎么能这样做?

哦,请提供一个答案x_labels可以是什么(如果有一些特定的月度标签方法,你永远不知道)。

任何可以提供帮助的人? 谢谢!

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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"};

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

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());