MPAndroidChart
MPAndroidChart copied to clipboard
How to set days for x-axis?
I wanna create a chart with 7 days only on the x-axis I wanna plot readings according to the day and hours they have been saved at but only show days' names.
time format: Thursday-7:23 pm which is something like "dd - HH: MM a"
import UIKit
import Charts
import TinyConstraints
class ViewController: UIViewController,ChartViewDelegate{
lazy var lineChartView: LineChartView = {
let chartView = LineChartView()
chartView.backgroundColor = UIColor(red: CGFloat(229.0/255), green: CGFloat(229.0/255), blue: CGFloat(229.0/255), alpha: 1)
//Y-axis
chartView.rightAxis.enabled = false//hides right axis
chartView.leftAxis.enabled = false
//X-axis
chartView.xAxis.labelPosition = .bottom
chartView.xAxis.centerAxisLabelsEnabled = false
chartView.xAxis.setLabelCount(7, force: true)//sets x axis to have 7 values
let xAxis = lineChartView.xAxis
//chartView.xAxis.granularity = 7
chartView.xAxis.labelFont = .boldSystemFont(ofSize: 20)
chartView.xAxis.axisLineColor = UIColor(red: CGFloat(135.0/255) , green: CGFloat(166.0/255), blue: CGFloat(171.0/255), alpha: 1)
chartView.xAxis.axisLineWidth = 1.5
chartView.xAxis.labelTextColor = UIColor(red: CGFloat(118.0/255) , green: CGFloat(170.0/255), blue: CGFloat(178.0/255), alpha: 1)
chartView.xAxis.drawGridLinesEnabled = false//hides x-axis grids
//chartView.xAxis.valueFormatter??
chartView.animate(xAxisDuration: 2.5)
return chartView
}()
override func viewDidLoad() {
super.viewDidLoad()
//To listen for taps on chart
lineChartView.delegate = self
view.addSubview(lineChartView)
lineChartView.centerInSuperview()
lineChartView.width(to: view)
lineChartView.heightToWidth(of: view)
setChartData()
}
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
print(entry)
}
func setChartData() {
//create a set for line 1
let color1 = NSUIColor(red: CGFloat(140.0/255.0), green: CGFloat(170.0/255.0), blue: CGFloat(177.0/255.0), alpha: 1)
let set1 = LineChartDataSet(entries: yValues, label: "hello")
set1.mode = .cubicBezier //makes curves smoother
set1.setCircleColor(color1)
set1.circleRadius = 6
set1.circleHoleRadius = 3
set1.lineWidth = 3
set1.setColor(color1)
//create a line chart data
let data1 = LineChartData(dataSet: set1)
data1.setDrawValues(false)//hides values on markers
//add data to lineChartView
lineChartView.data = data1
}
let yValues: [ChartDataEntry] = [
ChartDataEntry(x: 0.0, y: 10.0),
ChartDataEntry(x: 1.0, y: 5.0),
ChartDataEntry(x: 2.0, y: 7.0),
]
}