2017-10-02 4 views
1

어떤 이유로 인해 두 개의 데이터 세트가 아래에 표시된 것처럼 다른 스택에 겹쳐 있습니다. 나는 각각의 색상 변경하고자하기 때문에 월요일 (22) 총해야한다 예를 들어 수요일 나는 두 개의 데이터 세트를 생성 6.IOS 차트 - 스택 막대 차트가 스택되지 않음

enter image description here

총해야

let chartDataSet1 = BarChartDataSet(values: dataEntries1, label: "Points") 
chartDataSet1.barBorderColor = .gray 
let chartDataSet2 = BarChartDataSet(values: dataEntries2, label: "Scans") 
chartDataSet2.barBorderColor = .red 

을 ...

class ViewController: UIViewController { 

    @IBOutlet weak var barChartView: BarChartView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     barChartView.descriptionText = "" 
     barChartView.xAxis.labelPosition = .bottom 
     let ll = ChartLimitLine(limit: 10.0, label: "Target") 
     barChartView.rightAxis.addLimitLine(ll) 
     setChart() 
    } 

    func setChart(){ 
     let months = ["Mon", "Tues", "Wed", "Thu", "Fri", "Sat", "Sun"] 
     let points = [20.0, 4.0, 3.0, 6.0, 12.0, 16.0, 4.0] 
     let scans = [2.0, 4.0, 3.0, 6.0, 2.0, 4.0, 2.0] 
     barChartView.setBarChartData(xValues: months, yValues1: scans, yValues2: points) 

    } 
} 

......

extension BarChartView { 


    func setBarChartData(xValues: [String], yValues1: [Double], yValues2 : [Double]) { 

     var dataEntries1: [BarChartDataEntry] = [] 
     var dataEntries2: [BarChartDataEntry] = [] 

     for i in 0..<yValues1.count { 
      let dataEntry1 = BarChartDataEntry(x: Double(i), yValues: [yValues1[i]], label: "Points") 
      // let dataEntry = BarChartDataEntry(x: Double(i), y: yValues[i]) 
      dataEntries1.append(dataEntry1) 
     } 

     for i in 0..<yValues2.count { 
      let dataEntry2 = BarChartDataEntry(x: Double(i), yValues: [yValues2[i]], label: "Scans") 
      // let dataEntry = BarChartDataEntry(x: Double(i), y: yValues[i]) 
      dataEntries2.append(dataEntry2) 
     } 
     let chartDataSet1 = BarChartDataSet(values: dataEntries1, label: "Points") 
     chartDataSet1.barBorderColor = .gray 
     let chartDataSet2 = BarChartDataSet(values: dataEntries2, label: "Scans") 
     chartDataSet2.barBorderColor = .red 
     let chartData = BarChartData(dataSets: [chartDataSet1, chartDataSet2]) 

     let chartFormatter = BarChartFormatter(labels: xValues) 
     let xAxis = XAxis() 
     xAxis.valueFormatter = chartFormatter 
     self.xAxis.valueFormatter = xAxis.valueFormatter 

     self.data = chartData 
    } 
} 
나는 하나 개의 배열로 내 chartDataSet1 및 chartDataSet2을 결합하면 363,210

는 막대가 제대로 스택,하지만 나는 각각의 색상 변경하는 방법을 알아낼 수 없습니다 :

답변

1

당신은 다음과 같은 막대 그래프 데이터를 설정해야을 :

extension BarChartView { 

    func setBarChartData(xValues: [String], yValues1: [Double], yValues2 : [Double]) { 

     var dataEntries1: [BarChartDataEntry] = [] 
     for i in 0..<yValues1.count { 
      let dataEntry1 = BarChartDataEntry(x: Double(i), yValues: [yValues1[i], yValues2[i]], label: "Points") 
      dataEntries1.append(dataEntry1) 
     } 

     let chartDataSet1 = BarChartDataSet(values: dataEntries1, label: "Points") 
     chartDataSet1.barBorderColor = .red 
     chartDataSet1.stackLabels = ["Points", "Scans"] 
     chartDataSet1.colors = [UIColor.darkGray, UIColor.lightGray] 

     let chartData = BarChartData(dataSets: [chartDataSet1]) 

     let chartFormatter = BarChartFormatter(labels: xValues) 
     let xAxis = XAxis() 
     xAxis.valueFormatter = chartFormatter 
     self.xAxis.valueFormatter = xAxis.valueFormatter 
     self.data = chartData 
    } 
} 
+0

환상적입니다. 대단히 고마워! –