LineChart with combine charts
- Dominant language
- Swift
- Stars
- 28k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
I want to draw various line graphs in this combinecharts but the visualization does not fit the line but only a dot at the start point.

//
// ScatterTableViewCell.swift
// Homix
//
// Created by Francesco Stabile on 09/09/21.
//
import UIKit
import Charts
class ScatterTableViewCell: UITableViewCell {
@IBOutlet weak var chartView: CombinedChartView!
var sistolicAvarange = [90,100,120]
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
final func setupChart() {
chartView.isUserInteractionEnabled = false
chartView.legend.enabled = false
chartView.rightAxis.enabled = false
chartView.xAxis.drawAxisLineEnabled = false
chartView.xAxis.labelPosition = .bottom
chartView.xAxis.drawGridLinesEnabled = false
chartView.leftAxis.drawAxisLineEnabled = false
setDataCount(24, range: 180)
}
private func setDataCount(_ count: Int, range: UInt32) {
let values1 = (0.. ChartDataEntry in
let val = Double(arc4random_uniform(range) + 3)
return ChartDataEntry(x: Double(i), y: val)
}
let values2 = (0.. ChartDataEntry in
let val = Double(arc4random_uniform(range) + 3)
return ChartDataEntry(x: Double(i) + 0.33, y: val)
}
let values3 = (0.. ChartDataEntry in
let val = Double(arc4random_uniform(range) + 3)
return ChartDataEntry(x: Double(i) + 0.66, y: val)
}
var lineDataSets : [LineChartDataSet] = []
for i in 0...2 {
let value = (0.. ChartDataEntry in
let val = Double(arc4random_uniform(range) + 3)
let chartDataEntry = ChartDataEntry(x:Double(j), y: val)
return chartDataEntry
}
let dataSet = (LineChartDataSet(entries:value, label:"Line\(i)"))
dataSet.setColor(UIColor(red: 240/255, green: 238/255, blue: 70/255, alpha: 1))
dataSet.lineWidth = 2.5
dataSet.setCircleColor(UIColor(red: 240/255, green: 238/255, blue: 70/255, alpha: 1))
dataSet.circleRadius = 5
dataSet.circleHoleRadius = 2.5
dataSet.fillColor = UIColor(red: 240/255, green: 238/255, blue: 70/255, alpha: 1)
dataSet.mode = .cubicBezier
dataSet.drawValuesEnabled = true
dataSet.valueFont = .systemFont(ofSize: 10)
dataSet.valueTextColor = UIColor(red: 240/255, green: 238/255, blue: 70/255, alpha: 1)
dataSet.axisDependency = .left
lineDataSets.append(dataSet)
}
let set1 = ScatterChartDataSet(entries: values1, label: "DS 1")
set1.setScatterShape(.square)
set1.setColor(ChartColorTemplates.colorful()[0])
set1.scatterShapeSize = 8
let set2 = ScatterChartDataSet(entries: values2, label: "DS 2")
set2.setScatterShape(.circle)
set2.scatterShapeHoleColor = ChartColorTemplates.colorful()[3]
set2.scatterShapeHoleRadius = 3.5
set2.setColor(ChartColorTemplates.colorful()[1])
set2.scatterShapeSize = 8
let set3 = ScatterChartDataSet(entries: values3, label: "DS 3")
set3.setScatterShape(.triangle)
set3.setColor(ChartColorTemplates.colorful()[2])
set3.scatterShapeSize = 8
// let data: CombinedChartData = [set1, set2, set3,sistolicLineChart]
let data = CombinedChartData()
data.scatterData = ScatterChartData(dataSets: [set1,set2,set3])
data.lineData = LineChartData(dataSets:lineDataSets)
data.setValueFont(.systemFont(ofSize: 7, weight: .light))
chartView.data = data
}
}
Contributor guide
Research direction
Start with ScatterTableViewCell.swift, especially setupChart(), setDataCount(), CombinedChartView, and the construction of CombinedChartData with lineData and scatterData. Reproduce the chart from the supplied code and inspect how the line datasets are rendered; done means the combined chart displays the line graphs rather than only a dot at the starting point.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- data-visualization, mobile-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100