即使没有相应的 YValue,MPAndroidChart 也会显示指定范围的 XValues?

MPAndroidChart show specified range of XValues even when there is no corresponding YValue?

我遇到的问题是我的图表应该始终显示固定范围的 XValues 让我们说一天 24 小时,但图表只显示 XValues 直到并从第一个点开始最后一个 YValue,也就是说,如果我有两个 Y 事件,假设是凌晨 2 点和下午 3 点,而不是显示整个 24 小时,它将从凌晨 2 点开始到下午 3 点结束。

我认为这与通过 IAxisValueFormatter 处理 XValues 的新方法有关,因为当我们可以将 X 和 Y 值都添加到 ChartData 时,这曾经工作得很好。

我发现的一个变通方法是在我的例子中将空的 YValues 添加到第一个和最后一个小时的 0 值,但这带来了另一个问题,无论我在 LeftAxis 中设置最小值如何,它都会开始显示负标签值(从 -15 而不是 0 开始。

有官方的方法吗?我对此进行了很多研究,我正在考虑回到以前版本的库,在那里我可以使用旧方法。

编辑:只是为了澄清这个问题与标签没有任何关系,但是对于 X 中图表的开始和结束,它正在丢弃没有任何 YValues 的 X 范围我理解是有道理的,但在某些情况下它会使结果看起来很难看。

可以使用setLabelCount()的方法强制轴按照你指定的计数绘制标签

根据文档:

setLabelCount(int count, boolean force)

@param count:应该显示的y轴标签个数

@param force 如果启用,将强制设置标签计数,这意味着将绘制准确指定数量的标签并沿轴均匀分布- 这可能会导致标签的值不均匀

下面定义了setLabelCount方法

public void setLabelCount(int count) {

    if (count > 25)
        count = 25;
    if (count < 2)
        count = 2;

    mLabelCount = count;
    mForceLabels = false;
}

您可以将 setLabelCount()setAxisMaximum()setAxisMinimum() 一起使用

例如:

axis.setLabelCount(24, true);
axis.setAxisMaximum(24f);
axis.setAxisMinimum(0f);

无论 Y 轴值如何,这都会绘制 0 - 24 的值