2016-11-17 105 views
3

我在iOS上使用“图表”库(由Daniel Gindi编写)。iOS图表 - 始终显示限制线

我画一个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 

为限行的代码发生之后一切。

感谢

+0

我想你一定图表设置为全屏视图或可能采用定标所以它会给你ChartLimitLine –

+0

完整视图好,不过你知道怎么做吗? –

+0

检查自己 –

回答

-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) 
    } 
+0

请尝试这可能会帮助你 –

+0

你如何使用这些变量? –

0

我不知道我理解你的建议,但我认为你应该设置axisMaximum到80以上吧。 你说你的图形是静态的,所以也许你可以通过设置axisMinimumaxisMaximum来限制左边的Y轴的范围在40〜90之间。

如果你只是想显示没有大规模的所有图表,只需要调用

chart.setScaleEnabled(false) 
+0

问题是:我无法给出最大值的固定值。必须对每个图表进行计算。 –

+0

@FrédéricAdda我应该说,如果axisMaximum是自动计算的,并且如果它小于80,那么在80处永远不会看到y值的限制线。但是如果axisMaximum总是能够显示极限线,问题只是缩放,看到我的答案,我更新了它。 –