当前位置: 首页 > 知识库问答 >
问题:

带有MPAndroid图的自定义XAxis标签

谷梁涵忍
2023-03-14

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

但是,我真的不知道该怎么做。我想我必须使用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秒”的字符串,并只显示“0s”、“5s”和“10s”。

我不知道这是否可行,但有没有更好的方法?

感谢

共有1个答案

韩祯
2023-03-14

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

< code>addEntry(myDataSet,new Entry(my dataset . getentrycount()、my new value));

所以在1秒内你会得到25分。

现在,有了这些数据,让我们来研究XAxis。

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

希望这能澄清一切。干杯。

 类似资料:
  • 我试图获得一个带有自定义图标的JFrame,但没有任何效果。下面是我现在看到的Java 11:

  • 1)我正在练习用图形的东西,以便将这个功能添加到我的应用程序中,我希望上面的标签(xAxis基数)只显示在条目出现的地方。 我还没有在网上找到合适的解决方案,目前它出现在每个xAxis上,从第一个条目到最后一个条目,如下图所示: 我希望它没有一个sI删除,如下图所示: 2) 第二个问题是,我想在(x=5,y=7)中画图,然后在(x=1,y=3)中画画,但它不允许我添加一个x小于图中任何其他条目的条

  • 然而,在这一点上,我想做以下工作:1)将XAxis标签与垂直网格线匹配,使网格线也穿过蓝点;和 2) 在蓝色圆点上显示XAxis值。默认情况下,可以显示YAxis值-我知道怎么做;目前,我已经禁用了此功能,并且在下面的图片中没有显示,但如果我要显示启用它们,则它们将在5个蓝色点上显示为0.0、2.0、4.0、6.0和8.0。我想要的是显示XAxis值。 你能建议一个方法吗?非常感谢。

  • 问题内容: 当我需要定制我的UIPageControl解决方案。 为新版本的swift稍微修改一下即可: 我的问题是,当您第一次启动应用程序时,我无法更改图片。仅在页面更改时更改。 在中,我添加了和,但没有结果。我可能做错了什么? 问题答案: Swift 3.0 …您知道是否可以接受声明的风险:“修改现有控件的子视图很脆弱”。 您将必须在viewDidAppear()中调用“ updateDots

  • 我使用这段代码来最大化和恢复我的自定义表单。但是当窗体最大化时,它仍然可以拖动,我使用计时器来拖动窗体。

  • 在拖放过程中显示鼠标图标旁边节点的半透明“副本”的最佳方法是什么? 基本上,我有彩色背景和文本标签的HBox,我想给出的外观,他们“粘”到鼠标光标时,他们被拖动。 如果用户能够直观地验证他们正在拖动什么,而不是仅仅看到鼠标光标变成各种拖动图标,那就很好了。当你拖动一些组件(如RadioButton)时,Scene Builder倾向于这样做。