iOS图表 - 始终显示限制线

时间:2016-11-17 15:01:31

标签: ios-charts

我在iOS上使用“图表”库(Daniel Gindi)。

我绘制了一个LineChartView(没有问题),并希望添加一个限制线来表示目标值:

let targetLine = ChartLimitLine(limit: targetValue, label: "")
lineChartView.leftAxis.addLimitLine(targetLine)

我遇到的问题是:如果我的图表的y值离目标太远,限制线就不会显示在图表上。

示例:

  • 目标为80,最后一个值为59:限制线不显示。 limit line not appearing

  • 目标为80,最后一个值为79:限制线确实显示。 limit line appearing

无论y值是多少,我如何确保始终显示限制线?

附录:这是我的绘图代码的其余部分,它非常标准:

let chartView = LineChartView()
chartView.backgroundColor = UIColor.whiteColor()

chartView.dragEnabled = false
chartView.doubleTapToZoomEnabled = false
chartView.pinchZoomEnabled = false
chartView.highlightPerTapEnabled = false

chartView.descriptionText = ""
chartView.legend.enabled = false
chartView.rightAxis.enabled = false

// Set y axis
let yAxis = chartView.leftAxis
yAxis.removeAllLimitLines()
yAxis.drawZeroLineEnabled = true
yAxis.drawLimitLinesBehindDataEnabled = true
yAxis.valueFormatter = yValuesFormatter

// Set x axis
let xAxis = chartView.xAxis
xAxis.labelPosition = .Bottom
xAxis.drawLabelsEnabled = true
xAxis.drawLimitLinesBehindDataEnabled = true
xAxis.avoidFirstLastClippingEnabled = true


// Create a new dataset
let dataSet = LineChartDataSet(yVals: entries, label: "")
dataSet.drawValuesEnabled = false
dataSet.lineWidth = 2
dataSet.colors = [UIColor.customBlue]
dataSet.circleRadius = 5
dataSet.circleColors = [UIColor.customBlue]
dataSet.drawCircleHoleEnabled = false
dataSet.fillColor = UIColor.cityzenAccent
dataSet.fillAlpha = 0.5
dataSet.drawFilledEnabled = (chartType == .linefill) ? true : false

let data = LineChartData(xVals: xValues, dataSets: [dataSet])
chartView.data = data

限制线的代码发生在所有这些之后。

由于

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的建议,但我认为你应该将axisMaximum设置为80或更高。 你说你的图表是静态的,所以也许你可以通过设置axisMinimumaxisMaximum来限制左Y轴的范围在40~90之间。

如果您只想显示没有比例的所有图表,只需调用

即可
chart.setScaleEnabled(false)

答案 1 :(得分:-1)

  /// if the chart is fully zoomed out, return true
    open var isFullyZoomedOut: Bool
    {
        return isFullyZoomedOutX && isFullyZoomedOutY
    }

    /// - returns: `true` if the chart is fully zoomed out on it's y-axis (vertical).
    open var isFullyZoomedOutY: Bool
    {
        return !(_scaleY > _minScaleY || _minScaleY > 1.0)
    }