在AndroidPlot中设置轴值
我试图在使用AndroidPlot打印时修改X轴的值。 这是因为我试图表示音频频谱的FFT,我希望X轴显示不同的频率。 文件中建议使用:在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
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;
}