MPAndroidChart icon indicating copy to clipboard operation
MPAndroidChart copied to clipboard

How to set days for x-axis?

Open othmansh0 opened this issue 3 years ago • 0 comments

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),

    ]

}

othmansh0 avatar Feb 21 '22 18:02 othmansh0