ChartsOrg / ChartsOrg/Charts

LineChart with combine charts

Open
#4,714 1 comment 0 reactions 0 assignees View on GitHub
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.

![Simulator Screen Shot - iPhone 12 mini - 2021-09-09 at 15 51 06](https://user-images.githubusercontent.com/44165566/132698329-a4524702-15a3-46c6-b387-237d580e3dc4.png)

//
// 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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.