2017-06-25 18 views
0

私は現在、IOSチャートを使用していますライブラリへのリンクはこちらです:LinkIOSチャートY軸が正しく整列されていない - チャートココアポッド

現在、グラフは、左の軸ラベルがどのような彼らが必要表すものではありませします。 パンは現在拡大表示されています。 enter image description here

実際のデータセットがある:

yValues = [0,2,4,5,3,4,2,4,5,4,4]

左の軸は0.8単位で実際にここ

左軸を示す画像です。

どうすれば変更できますか?ここで

は、私は必要なものである:enter image description here

更新

、彼らがあるべき場所のプロットである

leftAxis.granularity = 1

を設定した後。ただし、[0,1,2,3,4,5] のうち3がスキップされており、左軸に表示されていません。何が原因でしょうか?

マイコード:私はあなたのコードを実行すると

`class ReviewDetailVC: UIViewController, ChartViewDelegate { 


@IBOutlet weak var chartView: LineChartView! 

var yValues = [Double]() 
var yLabels = [String]() 
var months = [String]() 
var xValues = [String]() 
let red = UIColor(hue: 0.9639, saturation: 0.62, brightness: 0.93, alpha: 1.0) 
let black = UIColor(red:0.29, green:0.29, blue:0.29, alpha:1.0) 
let grey = UIColor(red:0.81, green:0.81, blue:0.81, alpha:1.0) 

let avenirDemi = UIFont(name: "AvenirNext-DemiBold", size: 14) 
override func viewDidLoad() { 
    super.viewDidLoad() 

    chartView.delegate = self 
    // Chart Ui Settings 

    chartView.leftAxis.axisMinimum = 0 
    chartView.leftAxis.axisMaximum = 5 
    chartView.leftAxis.labelCount = 7 

    chartView.chartDescription?.text = "" 
    chartView.xAxis.labelPosition = .bottom 
    chartView.legend.enabled = false 
    chartView.scaleYEnabled = false 
    chartView.scaleXEnabled = true 
    chartView.doubleTapToZoomEnabled = false 
    chartView.highlighter = nil 
    chartView.rightAxis.enabled = false 
    chartView.xAxis.drawGridLinesEnabled = false 
    chartView.dragEnabled = true 
    chartView.scaleXEnabled = false 
    chartView.scaleYEnabled = false 
    chartView.zoom(scaleX: 4, scaleY: 1, x: 0, y: CGFloat(AxisDependency.left.rawValue)) 
    chartView.xAxis.labelFont = avenirDemi! 
    chartView.xAxis.labelTextColor = grey 
    chartView.leftAxis.labelFont = avenirDemi! 
    chartView.leftAxis.labelTextColor = black 
    chartView.xAxis.axisLineWidth = 0 
    chartView.leftAxis.axisLineWidth = 0 
    chartView.leftAxis.granularity = 1 
    chartView.xAxis.avoidFirstLastClippingEnabled = true 
    chartView.xAxis.granularityEnabled = true 
    chartView.xAxis.granularity = 1 
    chartView.xAxis.axisMinimum = 0.0 
    chartView.leftAxis.gridColor = grey 
    chartView.leftAxis.gridLineDashLengths = [4] 
    chartView.leftAxis.gridLineWidth = 1.5 
    chartView.xAxis.centerAxisLabelsEnabled = true 
    chartView.noDataText = "This person has not reviewed your business." 

    xValues = ["MAR 10"," MAR 15", "APR 7", "APR 8", "APR 15", "APR 30", "MAY 14", "MAY 21","MAY 31", "MAY 31"] 
    yLabels = ["0","1","2","3","4","5"] 
    yValues = [0,2,4,5,3,4,2,4,5,4,4] 

    let Xformatter = CustomLabelsAxisValueFormatter() 
    Xformatter.labels = xValues 
    let Yformatter = CustomYAxisLabelValueFormatter() 
    Yformatter.Ylabels = yLabels 

    chartView.xAxis.valueFormatter = Xformatter 
    chartView.leftAxis.valueFormatter = Yformatter 



    chartView.animate(yAxisDuration: 1) 

    setChart(dataPoints: xValues, values: yValues) 


} 



func setChart(dataPoints: [String], values: [Double]) { 
    chartView.noDataText = "You need to provide data for the chart." 

    var dataEntries: [ChartDataEntry] = [] 

    for i in 0..<dataPoints.count { 
     let dataEntry = ChartDataEntry(x: Double(i)+0.5, y: 
    values[i]) 
     dataEntries.append(dataEntry) 
    } 

    let chartDataSet = LineChartDataSet(values: dataEntries, label: "") 
    let chartData = LineChartData(dataSets: [chartDataSet]) 

    chartDataSet.drawValuesEnabled = false 
    chartDataSet.colors = [red] 
    chartDataSet.drawCirclesEnabled = true 
    chartDataSet.circleRadius = 16 
    chartDataSet.circleColors = [red] 
    chartDataSet.circleHoleRadius = 12 
    chartDataSet.circleHoleColor = UIColor.white 
    chartDataSet.lineWidth = 4 


    chartView.data = chartData 

} 





@IBAction func backBtnPressed(_ sender: Any) { 
    self.presentingViewController?.dismiss(animated: true, 
completion: nil) 
} 

} 

class CustomLabelsAxisValueFormatter : NSObject, IAxisValueFormatter 
{ 

var labels: [String] = [] 

func stringForValue(_ value: Double, axis: AxisBase?) -> String { 
     let count = self.labels.count 

     guard let axis = axis, count > 0 else { 

     return "" 
     } 

     let factor = axis.axisMaximum/Double(count) 

     let index = Int((value/factor).rounded()) 

     if index >= 0 && index < count { 

      return self.labels[index] 
     } 

    return "" 
} 


} 

class CustomYAxisLabelValueFormatter : NSObject, IAxisValueFormatter { 


var Ylabels: [String] = [] 

func stringForValue(_ value: Double, axis: AxisBase?) -> String { 
    let count = self.Ylabels.count 

    guard let axis = axis, count > 0 else { 

     return "" 
    } 

    let factor = axis.axisMaximum/Double(count) 

    let index = Int((value/factor).rounded()) 

    if index >= 0 && index < count { 

     return self.Ylabels[index] 
    } 

    return "" 
} 


}` 

答えて

1

これは私が得るものです:

enter image description here

だから私はあなたの問題を再現することはできませんよ、私は変更さ唯一の事でした私はCustomYAxisLabelValueFormatterのコードを持っていないので、これらの3行のコメントを外してください。したがって、それらの行のコメントを外すと、うまくいくはずです。

//let Yformatter = CustomYAxisLabelValueFormatter() 
    //Yformatter.Ylabels = yLabels 
    //chartView.leftAxis.valueFormatter = Yformatter 
+0

質問を更新しました。私は自分のコードも投稿します。 – ethanfox27

+0

私はそれを試して、私は効果が好きです:)しかし、彼らはそれらを修正していません左軸 – ethanfox27

+0

私は答えを更新しました – DevB2F

関連する問題