2016-11-17 87 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總是能夠顯示極限線,問題只是縮放,看到我的答案,我更新了它。 –