XAxis条目数大于Swift 3中的iOS图表3.0.1中应有的数量

Set*_*hmr 5 charts xcode swift

我有两个BarChartDataSets。其中一个始终为3,另一个为2或3。我测试了3.0.0版中的代码,一切正常。当3.0.1发布时,它打破了我的图表。我总是具有正确的条数,但是当第二个数据集的大小仅为2时,我有6个标签,而不是5个。它与stringForValueDelegate函数无关。我X使用int 设置值,这些值与要在该索引处表示的Bar线性相关,因此,当正常工作时,每个bar均等距,但是当我有6个标签和5个bar时,它们均不均等。

在此处输入图片说明 左边的一个显示问题,右边的一个显示当我的BarChartDataSet大小为3时的样子。它正在复制图表上的最后一个值,并将其添加为左边的第6个标签。在3.0.0中,左侧的标签只有5个标签。

我挖成自己的代码,并在那里他们创建标签XAxisRendererHorizontalBarChart.swift
权利,他们打电话前

drawLabel()

我叫

print("xAxis entries: \(xAxis.entries.count)")

这打印

xAxis entries: 6

到控制台,即使之前,我打电话

let chartData = BarChartData(dataSets: [chartDataSet1, chartDataSet2])

我叫

print("dataEntries1 count: \(dataEntries1.count), dataEntries2 count: (dataEntries2.count)")

其打印

dataEntries1 count: 3, dataEntries2 count: 2

Win*_*ero 4

首先,xAxis.entriesdataSet.entries是完全不同的。

xAxis.entries是在轴上显示为标签的值,而dataSet.entries是为数据显示的值,例如折线图中的点值或条形图中的条形值。

对于 x 轴,它通过数据条目的最小/最大值计算标签计数。在图表 3.0 中,x 轴的行为与 y 轴类似,因此它会像 y 轴一样计算 x 轴条目,请查看computeAxisValues()详细信息。

因此xAxis.entriesdataSet.entries不必大小相等。

如果您想将 x 轴标签计数设置为与条数相同,您可以调用setLabelCount(5(6), true)

open func setLabelCount(_ count: Int, force: Bool)
{
    self.labelCount = count
    forceLabelsEnabled = force
}
Run Code Online (Sandbox Code Playgroud)

注意,不要调用 labelCount 设置器,因为它是不同的:

/// the number of label entries the axis should have
/// max = 25,
/// min = 2,
/// default = 6,
/// be aware that this number is not fixed and can only be approximated
open var labelCount: Int
{
    get
    {
        return _labelCount
    }
    set
    {
        _labelCount = newValue

        if _labelCount > 25
        {
            _labelCount = 25
        }
        if _labelCount < 2
        {
            _labelCount = 2
        }

        forceLabelsEnabled = false
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该小心使用 labelCount 设置器。forcelabelEnabled 意味着标签计数将坚持您设置的计数。如果你使用setter,计数将有机会再次不同 (2认同)