gpt4 book ai didi

android - 使用 MPAndroidChart 自定义 XAxis 标签

转载 作者:行者123 更新时间:2023-11-29 14:43:56 34 4
gpt4 key购买 nike

我是 MPAndroidChart 的新手,我想在 LineChart 的 XAxis 上实时显示时间。我只想显示传入数据的最后 10 秒,如下图所示。我的采样频率为 25Hz,因此我需要显示 250 个值才能记录 10 秒。

Something like this

但是,我真的不知道该怎么做。我想我必须使用 IAxisValueFormatter .

目前,我的传入值是这样添加到数据集中的:

addEntry(myDataSet, new Entry(myDataSet.getEntryCount(), myNewValue));

但也许我需要这样做:

/* add 40 ms on xAxis for each new value */
addEntry(myDataSet, new Entry(myLastTimeStamp + 40, myNewValue));

然后创建一个格式化程序,将 X 值转换为类似“xxx seconds”的字符串并仅显示“0s”、“5s”和“10s”。

我不知道它是否有效,但是有更好的方法吗?

谢谢

最佳答案

所以我在这里看到两个问题。
1. 您需要在 10 秒内绘制 250 个值。
2. 正确格式化X轴。
所以第一个问题的解决方案,你必须在十秒内显示 250 个值。所以你的 x 轴实际上将有 250 个数据点,因为你正在做:

addEntry(myDataSet, new Entry(myDataSet.getEntryCount(), myNewValue));

所以在 1 秒内您将获得 25 分。

现在,有了所有这些数据,我们就可以在 X 轴上工作了。

xAxis = chart.getXAxis();
xAxis.setAxisMinimum(0);
xAxis.setAxisMaximum(250); // because there are 250 data points
xAxis.setLabelCount(3); // if you want to display 0, 5 and 10s which are 3 values then put 3 else whatever of your choice.
xAxis.setValueFormatter(new MyFormatter());

你的格式化程序必须看起来像这样:

public class MyFormatter implements IAxisValueFormatter {
@Override
public String getFormattedValue(float value, AxisBase axis) {
//Modify this as per your needs. If you need 3 values like 0s, 5s and 10s then do this.
//0 mod 125 = 0 Corresponds to 0th second
//125 mod 125 = 0 Corresponds to 5th second
//250 mod 125 = 0 Corresponds to 10th second
if(value % 125 == 0){
int second = (int) value / 25; // get second from value
return second + "s" //make it a string and return
}else{
return ""; // return empty for other values where you don't want to print anything on the X Axis
}
}

希望这会清除所有内容。干杯!

关于android - 使用 MPAndroidChart 自定义 XAxis 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170524/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com