我尝试重新创建类似于此示例的堆叠水平条形图:http://www.highcharts.com/demo/bar-stacked
我目前的图表非常接近这个例子,但我不具备我想要的标签/着色的灵活性。
import UIKit
import Charts
@objc(BarChartFormatter)
public class BarChartFormatter: NSObject, IAxisValueFormatter {
var names = [String]()
public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return names[Int(value)]
}
public func setValues(values: [String]) {
self.names = values
}
}
class graphController: UIViewController {
@IBOutlet weak var barChartView: HorizontalBarChartView!
func setChart(dataPoints: [String], values: [[Double]]) {
let formatter = BarChartFormatter()
formatter.setValues(values: dataPoints)
let xaxis:XAxis = XAxis()
barChartView.noDataText = "No data."
var dataEntries: [BarChartDataEntry] = []
for j in 0..<values.count {
let dataEntry = BarChartDataEntry(x: Double(j), yValues: values[j], label: dataPoints[j])
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: nil)
chartDataSet.colors = [UIColor(red: 0.0, green: 0.5, blue: 1.0, alpha: 1.0), UIColor(red: 0.5, green: 0.5, blue: 1.0, alpha: 1.0), UIColor(red: 1.0, green: 0.5, blue: 1.0, alpha: 1.0)]
chartDataSet.valueTextColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
let chartData = BarChartData(dataSet: chartDataSet)
xaxis.valueFormatter = formatter
barChartView.xAxis.labelPosition = .bottom
barChartView.xAxis.drawGridLinesEnabled = false
barChartView.xAxis.valueFormatter = xaxis.valueFormatter
barChartView.xAxis.granularityEnabled = true
barChartView.xAxis.granularity = 1.0
barChartView.xAxis.decimals = 0
barChartView.chartDescription?.enabled = false
barChartView.legend.enabled = true
barChartView.rightAxis.enabled = false
barChartView.data = chartData
}
override func viewDidLoad() {
super.viewDidLoad()
barChartView.noDataText = "No activity data."
barChartView.noDataTextColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
barChartView.xAxis.labelTextColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
barChartView.legend.textColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
barChartView.backgroundColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1.0)
barChartView.tintColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
barChartView.gridBackgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
barChartView.borderColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
barChartView.xAxis.gridColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
barChartView.xAxis.axisLineColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
barChartView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)
barChartView.rightAxis.enabled = false
barChartView.leftAxis.enabled = false
let names = ["A", "B", "C"]
let values = [[2.0,1.0,1.0], [1.0,2.0,1.0], [1.0,1.0,2.0]]
setChart(dataPoints: names, values: values)
}
}
如何修改setChart()
以基于每个条形而不是数据集级别指定颜色,并在每个颜色的基础上指定我的图例而不是&#34; Stack&#34 ;