当我在数组中有多个点用于折线图上的一行时,一切都很完美。 但是当只有一个点时,点不显示。我不知道为什么? 代表正在其他地方设置,但这似乎不是问题。
以下示例显示了测试2和测试练习。第一个图像是每个图像都有一个值,第二个图像每个都有2个值。
继承我的代码
func startChart(){
chart.dragEnabled = true
chart.legend.form = .circle
chart.drawGridBackgroundEnabled = false
let xaxis = chart.xAxis
xaxis.valueFormatter = axisFormatDelegate
xaxis.labelCount = dataSets.count
xaxis.labelPosition = .bottom
xaxis.granularityEnabled = true
xaxis.granularity = 1.0
xaxis.avoidFirstLastClippingEnabled = true
xaxis.forceLabelsEnabled = true
let rightAxis = chart.rightAxis
rightAxis.enabled = false
rightAxis.axisMinimum = 0
let leftAxis = chart.leftAxis
leftAxis.drawGridLinesEnabled = true
leftAxis.axisMinimum = 0
let chartData = LineChartData(dataSets: dataSets)
chart.data = chartData
}
如果我添加
chart.setVisibleXRangeMinimum(myMinDate)
该值将正确显示。但它会将值压向左侧并重叠2 x值日期
答案 0 :(得分:0)
我能解决这个问题的唯一方法是添加一条额外的隐形线。
我创建了一条清晰的行,该行在前一天开始并在我的单个值之后的第二天结束。
只要图表上有一条线从一个点到另一个点,其他单个值就会显示出来。
var singleValue = false
for i in 0...(dataSets.count - 1) {
if dataSets[i].values.count > 1{
singleValue = true
}
}
var data = dataSets
if singleValue == false {
let minNS = Calendar.current.date(byAdding: .day, value: -1, to: minNSDate as! Date)
let maxNS = Calendar.current.date(byAdding: .day, value: 1, to: maxNSDate as! Date)
var dataEntries: [ChartDataEntry] = []
let dataEntry1 = ChartDataEntry(x:Double(String(format: "%.2f",Double((minNS?.timeIntervalSince1970)!)))!,y:00.00)
let dataEntry2 = ChartDataEntry(x:Double(String(format: "%.2f",Double((maxNS?.timeIntervalSince1970)!)))!,y:00.00)
dataEntries.append(dataEntry1)
dataEntries.append(dataEntry2)
let set = LineChartDataSet(values: dataEntries, label: "")
set.setCircleColor(UIColor.clear)
set.circleHoleColor = UIColor.clear
set.setColor(UIColor.white, alpha: 0.0)
set.drawValuesEnabled = false
data.append(set)
}
chart.chartDescription?.text = ""
let chartData = LineChartData(dataSets: data)
chart.data = chartData
答案 1 :(得分:0)
我想我找到了更好的解决方案。单点不足以画线(您至少需要两个点),因此UPDATE
无法呈现您的数据。您可以将LineChartView
替换为LineChartView
来解决此问题。 CombinedChartView
可以在一个图表上混合使用不同类型的数据。您可以查看您拥有的数据量,并确定哪种类型的CombinedChartView
适当。
代码示例:
DataSet
您还可以在一个图表中组合两种或更多种类型 if dataEntry.count == 1 {
let scatterDataSet = ScatterChartDataSet(values: dataEntry, label: title)
scatterDataSet.setColor(UIColor.pmd_darkBlue)
scatterDataSet.setScatterShape(.circle)
scatterDataSet.drawValuesEnabled = false
combinedChartData.scatterData = ScatterChartData(dataSets: [scatterDataSet])
}
else {
let lineDataSet = LineChartDataSet(values: dataEntry, label: title)
lineDataSet.setColor(UIColor.pmd_darkBlue)
lineDataSet.lineWidth = 3.0
lineDataSet.drawCirclesEnabled = false
lineDataSet.drawValuesEnabled = false
combinedChartData.lineData = LineChartData(dataSets: [lineDataSet])
}
combinedChart.data = combinedChartData
。
不要忘记添加以下行:
DataSets
您必须编写您使用的数据类型,否则数据将无法呈现。