[英]How to have charts of the same type (ie LineChart) on the same axis using Daniel Gindi's chart library?
我有一個圖表,將在同一軸上顯示多個折線圖和散點圖。 它們都將具有相同的 x 軸。 我似乎不能有多個 lineCharts 在同一軸內。
我嘗試過實現 CombinedChartView。 我創建了一個函數,該函數接收相應數據集的數組。
func customiseChart (rule1x: [Double], rule1y: [Double], rule2x: [Double], rule2y: [Double], rule3x: [Double], rule3y: [Double], rule4x: [Double], rule4y: [Double], rule5x: [Double], rule5y: [Double], rule6x: [Double], rule6y: [Double], rule7x: [Double], rule7y: [Double], suppressedSparksX: [Double], suppressedSparksY: [Double], exsuppressedSparksX: [Double], exsuppressedSparksY: [Double], CombinedChartView: CombinedChartView, labelRule1: String, labelRule2: String, labelRule3: String, labelRule4: String, labelRule5: String, labelRule6: String, labelRule7: String, labelSuppressed: String, labelExsuppressed: String) {
//1) set ChartDataEntry for all the graphs
var rule1ChartEntries: [ChartDataEntry] = []
for i in 0..<rule1y.count {
let entries = ChartDataEntry(x: rule1x[i], y: rule1y[i])
rule1ChartEntries.append(entries)
}
. . .
var rule7ChartEntries: [ChartDataEntry] = []
for i in 0..<rule7y.count {
let entries = ChartDataEntry(x: rule7x[i], y: rule7y[i])
rule7ChartEntries.append(entries)
}
var suppressedScatterChartEntries: [ChartDataEntry] = []
for i in 0..<suppressedSparksY.count {
let entries = ChartDataEntry(x: suppressedSparksX[i], y: suppressedSparksY[i])
suppressedScatterChartEntries.append(entries)
}
var exsuppressedScatterChartEntries: [ChartDataEntry] = []
for i in 0..<exsuppressedSparksY.count {
let entries = ChartDataEntry(x: exsuppressedSparksX[i], y: exsuppressedSparksY[i])
exsuppressedScatterChartEntries.append(entries)
}
//2) set ChartDataSet for all the charts
let rule1DataSet = LineChartDataSet(entries: rule1ChartEntries, label: labelRule1)
rule1DataSet.colors = [NSUIColor.black]
let rule1data = LineChartData()
rule1data.addDataSet(rule1DataSet)
rule1DataSet.drawCirclesEnabled = false
rule1DataSet.drawValuesEnabled = false
let rule2DataSet = LineChartDataSet(entries: rule2ChartEntries, label: labelRule2)
rule2DataSet.colors = [NSUIColor.darkGray]
let rule2data = LineChartData()
rule2data.addDataSet(rule2DataSet)
rule2DataSet.drawCirclesEnabled = false
rule2DataSet.drawValuesEnabled = false
. . .
let rule7DataSet = LineChartDataSet(entries: rule7ChartEntries, label: labelRule7)
rule7DataSet.colors = [NSUIColor.yellow]
let rule7data = LineChartData()
rule7data.addDataSet(rule7DataSet)
rule7DataSet.drawCirclesEnabled = false
rule7DataSet.drawValuesEnabled = false
let suppressedSparkDataSet = ScatterChartDataSet(entries: suppressedScatterChartEntries, label: labelSuppressed)
suppressedSparkDataSet.colors = [NSUIColor.red]
let suppressedData = ScatterChartData()
suppressedData.addDataSet(suppressedSparkDataSet)
let exsuppressedSparkDataSet = ScatterChartDataSet(entries: exsuppressedScatterChartEntries, label: labelExsuppressed)
exsuppressedSparkDataSet.colors = [NSUIColor.blue]
let exsuppressedData = ScatterChartData()
exsuppressedData.addDataSet(exsuppressedSparkDataSet)
// 3) set combinedData
let combinedData = CombinedChartData()
combinedData.lineData = rule1data
combinedData.lineData = rule2data
combinedData.lineData = rule3data
combinedData.lineData = rule4data
combinedData.lineData = rule5data
combinedData.lineData = rule6data
combinedData.lineData = rule7data
combinedData.scatterData = suppressedData
combinedData.scatterData = exsuppressedData
//4) assign all the data into the combined chart
CombinedChartView.data = combinedData
}
我希望所有圖表都顯示在圖表上。 但是,只顯示最后聲明的 lineChart 和 ScatterChart,這意味着圖表上只有 rule7data 和 exsuppressedData。 圖表的其余部分不顯示。
而不是這樣做
let rule1data = LineChartData()
rule1data.addDataSet(rule1DataSet)
您可以將多個數據集添加到一個 LineChartData
所以你可以這樣做:
let allLineDatas = LineChartData(dataSets: [rule1DataSet, rule2DataSet,....])
combinedData.lineData = allLineDatas
其他人也一樣。
combinedData.scatterData = allScatterDatas
您可以下載他們的示例項目並在模擬器中運行,您會在那里找到各種示例,然后您可以找到需要集成的示例的代碼
基本上,您創建新的變量。 您創建所需圖表類型的數據集類型的數組。
var allLineChartDataSets: [LineChartDataSet] = [LineChartDataSet]()
var allScatterDataSets: [ScatterChartDataSet] = [ScatterChartDataSet]()
//1) set ChartDataEntry for all the graphs
var rule1ChartEntries: [ChartDataEntry] = []
for i in 0..<rule1y.count {
let entries = ChartDataEntry(x: rule1x[i], y: rule1y[i])
rule1ChartEntries.append(entries)
. . .
然后,將各個數據集附加到上面聲明的 DataSets 數組中,如下所示:
//2) set ChartDataSet for all the charts
let rule1DataSet = LineChartDataSet(entries: rule1ChartEntries, label: labelRule1)
rule1DataSet.colors = [NSUIColor.black]
let rule1data = LineChartData()
rule1data.addDataSet(rule1DataSet)
rule1DataSet.drawCirclesEnabled = false
rule1DataSet.drawValuesEnabled = false
allLineChartDataSets.append(rule1DataSet)
. . .
對 scatterChart 或您選擇的任何其他圖表也執行此操作。
最后,
// 3) set combinedData
let lineChartDataSets = LineChartData(dataSets: allLineChartDataSets)
let scatterChartDataSets = ScatterChartData(dataSets: allScatterDataSets)
let combinedData = CombinedChartData()
combinedData.lineData = lineChartDataSets
combinedData.scatterData = scatterChartDataSets
//4) assign all the data into the combined chart
CombinedChartView.data = combinedData
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.