在AndroidPlot中设置轴值

在AndroidPlot中设置轴值,android,label,axis,androidplot,Android,Label,Axis,Androidplot,我试图在使用AndroidPlot打印时修改X轴的值。 这是因为我试图表示音频频谱的FFT,我希望X轴显示不同的频率。 文件中建议使用: SimpleXYSeries.ArrayFormat.Y_VALS_ONLY 它使用元素索引作为x值,但这不是我需要的 我需要执行以下操作来转换轴 f=i*Fs/N 为Fs,以Hz和N为单位的采样率,FFT中的点数 我知道我需要创建一个新的格式化程序,我已经检查了几个这样的示例 this.getGraphWidget().setDomainValueForm

我试图在使用AndroidPlot打印时修改X轴的值。 这是因为我试图表示音频频谱的FFT,我希望X轴显示不同的频率。 文件中建议使用:

SimpleXYSeries.ArrayFormat.Y_VALS_ONLY
它使用元素索引作为x值,但这不是我需要的

我需要执行以下操作来转换轴 f=i*Fs/N 为Fs,以Hz和N为单位的采样率,FFT中的点数

我知道我需要创建一个新的格式化程序,我已经检查了几个这样的示例

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

问题是我并不真正理解它是如何工作的,我也不知道如何使它适应我的需要

提前谢谢

默认情况下,自定义格式的Format(object、StringBuffer、FieldPosition)方法的“object”字段对应于等式中的“i”。因此,您应该能够执行以下操作:

@Override
public StringBuffer format(Object object, StringBuffer buffer, FieldPosition field) {
    int i = Math.round(Float.parseFloat(object.toString()));

    // assumes 'freqHz' and 'samples' (your array or list of of underlying samples) is
    // within scope of this method call:
    String thisFreq = i * (freqHz / samples.length);
    buffer.append(thisFreq + "Hz");
    return buffer;
}