Swift 隐藏折线图限制线。斯威夫特2
我正在使用Charts框架(danielgindi/Charts) 我有一段显示1、2和3。根据选择,折线图应在折线图中显示该数量的线。 我有一个switch语句,它取决于显示该行数的段中提供的数字。例如,在案例1中,显示1行、案例2、2行等这正如预期的那样有效 当我尝试在这个switch语句中添加限制行,并从一个较高的情况切换到较低的情况下,例如3到2,第三行不会消失&第1行和第2行似乎有重复 在switch语句中是否有隐藏限制行的方法 我有以下代码:Swift 隐藏折线图限制线。斯威夫特2,swift,linechart,ios-charts,Swift,Linechart,Ios Charts,我正在使用Charts框架(danielgindi/Charts) 我有一段显示1、2和3。根据选择,折线图应在折线图中显示该数量的线。 我有一个switch语句,它取决于显示该行数的段中提供的数字。例如,在案例1中,显示1行、案例2、2行等这正如预期的那样有效 当我尝试在这个switch语句中添加限制行,并从一个较高的情况切换到较低的情况下,例如3到2,第三行不会消失&第1行和第2行似乎有重复 在switch语句中是否有隐藏限制行的方法 我有以下代码: func setChart(xValu
func setChart(xValues: [String], valuesLineChart: [[Double]], limitLines: [Double]) {
chartView.descriptionText = ""
chartView.noDataText = "You need to provide data for the chart."
print("valuesLineChart has \(valuesLineChart.count) lines")
var dataSets : [LineChartDataSet] = [LineChartDataSet]()
switch valuesLineChart.count {
case 1 : print("1 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
dataSets.append(set1)
//limit lines
let limitSet1 = ChartLimitLine(limit: limitLines[0], label: "switch1, limit1")
chartView.rightAxis.addLimitLine(limitSet1)
case 2 :print("2 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
dataSets.append(set1)
dataSets.append(set2)
//limit lines
let limitSet1 = ChartLimitLine(limit: limitLines[0], label: "")
let limitSet2 = ChartLimitLine(limit: limitLines[1], label: "")
chartView.rightAxis.addLimitLine(limitSet1)
chartView.rightAxis.addLimitLine(limitSet2)
case 3 :print("3 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
var yVals3 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals3.append(ChartDataEntry(value: valuesLineChart[2][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
let set3 = LineChartDataSet(yVals: yVals3, label: nil)
dataSets.append(set1)
dataSets.append(set2)
dataSets.append(set3)
//limit lines
let limitSet1 = ChartLimitLine(limit: limitLines[0], label: "")
let limitSet2 = ChartLimitLine(limit: limitLines[1], label: "")
let limitSet3 = ChartLimitLine(limit: limitLines[2], label: "")
chartView.rightAxis.addLimitLine(limitSet1)
chartView.rightAxis.addLimitLine(limitSet2)
chartView.rightAxis.addLimitLine(limitSet3)
}
let data: CombinedChartData = CombinedChartData(xVals: xValues)
data.lineData = LineChartData(xVals: xValues, dataSets: dataSets)
chartView.data = data
}
func设置图(xValues:[String],valuesLineChart:[Double]],limitLines:[Double]){
chartView.descriptionText=“”
chartView.noDataText=“您需要为图表提供数据。”
打印(“valuesLineChart有\(valuesLineChart.count)行”)
变量数据集:[LineChartDataSet]=[LineChartDataSet]()
开关值NECHART.count{
案例1:打印(“开关内的1”)
变量yVals1:[ChartDataEntry]=[ChartDataEntry]()
对于0..中的i,我找到了问题的解决方案。当段选择不同的数字时,我调用了setChart函数,导致限制线重复
为了解决这个问题,我在调用setChart函数之前删除了限制线
var limitSet1 : ChartLimitLine?
var limitSet2 : ChartLimitLine?
var limitSet3 : ChartLimitLine?
var limitLineArray : [Double]
func removeLimitLines {
switch (limitLineArray.count) {
case 1: print("there was 1 limit line, need to remove this from chart view")
chartView.rightAxis.removeLimitLine(limitSet1!)
case 2: print("there was 2 limit line, need to remove this from chart view")
chartView.rightAxis.removeLimitLine(limitSet1!)
chartView.rightAxis.removeLimitLine(limitSet2!)
case 3: print("there was 3 limit line, need to remove this from chart view")
chartView.rightAxis.removeLimitLine(limitSet1!)
chartView.rightAxis.removeLimitLine(limitSet2!)
chartView.rightAxis.removeLimitLine(limitSet3!)
}
}
func setChart(xValues: [String], valuesLineChart: [[Double]], limitLines: [Double]) {
chartView.descriptionText = ""
chartView.noDataText = "You need to provide data for the chart."
print("valuesLineChart has \(valuesLineChart.count) lines")
var dataSets : [LineChartDataSet] = [LineChartDataSet]()
switch valuesLineChart.count {
case 1 : print("1 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
dataSets.append(set1)
//limit lines
limitSet1 = ChartLimitLine(limit: limitLines[0], label: "switch1, limit1")
chartView.rightAxis.addLimitLine(limitSet1)
case 2 :print("2 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
dataSets.append(set1)
dataSets.append(set2)
//limit lines
limitSet1 = ChartLimitLine(limit: limitLines[0], label: "")
limitSet2 = ChartLimitLine(limit: limitLines[1], label: "")
chartView.rightAxis.addLimitLine(limitSet1)
chartView.rightAxis.addLimitLine(limitSet2)
case 3 :print("3 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
var yVals3 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals3.append(ChartDataEntry(value: valuesLineChart[2][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
let set3 = LineChartDataSet(yVals: yVals3, label: nil)
dataSets.append(set1)
dataSets.append(set2)
dataSets.append(set3)
//limit lines
limitSet1 = ChartLimitLine(limit: limitLines[0], label: "")
limitSet2 = ChartLimitLine(limit: limitLines[1], label: "")
limitSet3 = ChartLimitLine(limit: limitLines[2], label: "")
chartView.rightAxis.addLimitLine(limitSet1)
chartView.rightAxis.addLimitLine(limitSet2)
chartView.rightAxis.addLimitLine(limitSet3)
}
let data: CombinedChartData = CombinedChartData(xVals: xValues)
data.lineData = LineChartData(xVals: xValues, dataSets: dataSets)
chartView.data = data
}
我找到了解决问题的方法。当线段选择不同的数字时,我调用了setChart函数,导致限制线重复
为了解决这个问题,我在调用setChart函数之前删除了限制线
var limitSet1 : ChartLimitLine?
var limitSet2 : ChartLimitLine?
var limitSet3 : ChartLimitLine?
var limitLineArray : [Double]
func removeLimitLines {
switch (limitLineArray.count) {
case 1: print("there was 1 limit line, need to remove this from chart view")
chartView.rightAxis.removeLimitLine(limitSet1!)
case 2: print("there was 2 limit line, need to remove this from chart view")
chartView.rightAxis.removeLimitLine(limitSet1!)
chartView.rightAxis.removeLimitLine(limitSet2!)
case 3: print("there was 3 limit line, need to remove this from chart view")
chartView.rightAxis.removeLimitLine(limitSet1!)
chartView.rightAxis.removeLimitLine(limitSet2!)
chartView.rightAxis.removeLimitLine(limitSet3!)
}
}
func setChart(xValues: [String], valuesLineChart: [[Double]], limitLines: [Double]) {
chartView.descriptionText = ""
chartView.noDataText = "You need to provide data for the chart."
print("valuesLineChart has \(valuesLineChart.count) lines")
var dataSets : [LineChartDataSet] = [LineChartDataSet]()
switch valuesLineChart.count {
case 1 : print("1 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
dataSets.append(set1)
//limit lines
limitSet1 = ChartLimitLine(limit: limitLines[0], label: "switch1, limit1")
chartView.rightAxis.addLimitLine(limitSet1)
case 2 :print("2 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
dataSets.append(set1)
dataSets.append(set2)
//limit lines
limitSet1 = ChartLimitLine(limit: limitLines[0], label: "")
limitSet2 = ChartLimitLine(limit: limitLines[1], label: "")
chartView.rightAxis.addLimitLine(limitSet1)
chartView.rightAxis.addLimitLine(limitSet2)
case 3 :print("3 within switch")
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
var yVals3 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals3.append(ChartDataEntry(value: valuesLineChart[2][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
let set3 = LineChartDataSet(yVals: yVals3, label: nil)
dataSets.append(set1)
dataSets.append(set2)
dataSets.append(set3)
//limit lines
limitSet1 = ChartLimitLine(limit: limitLines[0], label: "")
limitSet2 = ChartLimitLine(limit: limitLines[1], label: "")
limitSet3 = ChartLimitLine(limit: limitLines[2], label: "")
chartView.rightAxis.addLimitLine(limitSet1)
chartView.rightAxis.addLimitLine(limitSet2)
chartView.rightAxis.addLimitLine(limitSet3)
}
let data: CombinedChartData = CombinedChartData(xVals: xValues)
data.lineData = LineChartData(xVals: xValues, dataSets: dataSets)
chartView.data = data
}