Charts: рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ - рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рджрд┐рд╕ре░ 2016  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: danielgindi/Charts

рдореЗрд░реЗ рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ, рддреЛ рдореИрдВ рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдХреЛ рдмреАрдЪ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ:

screen shot 2016-12-25 at 7 00 36 pm

рдпрджрд┐ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

screen shot 2016-12-25 at 7 00 50 pm

рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдкрд░ рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдкрд┐рдЫрд▓реЗ рейреж рджрд┐рдиреЛрдВ рдХрд╛ рдбреЗрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓, реирел рджрд┐рд╕рдВрдмрд░ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдореЗрд░рд╛ рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рд╣рдореЗрд╢рд╛ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдкрд░ рдкрд╣рд▓рд╛ рдФрд░ рдЖрдЦрд┐рд░реА рд▓реЗрдмрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдмреАрдЪ рдореЗрдВ рд▓реЗрдмрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

    lineChart?.xAxis.setLabelCount(arrOfMonth.count, force: true)

рдпрд╣ рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдХреЗ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ - рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

рд╕рднреА 21 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

avoidFirstLastClippingEnabled , рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧрд▓рдд рд╣реИред

    /// if set to true, the chart will avoid that the first and last label entry in the chart "clip" off the edge of the chart
    open var avoidFirstLastClippingEnabled = false

@ cnowak7 рдХреНрдпрд╛ рдЖрдк рджреВрд╕рд░реА рдЫрд╡рд┐ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ? рдХреГрдкрдпрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ

avoidFirstLastClippingEnabled рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЦрд┐рд░реА рд▓реЗрдмрд▓ рд╣рдореЗрд╢рд╛ рдХрдЯ рдЬрд╛рддрд╛ рд╣реИ

рдпрджрд┐ рдореИрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдЕрдХреНрд╖ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ AxisRendererBase.computeAxisValues рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдереАред

https://github.com/danielgindi/Charts/issues/2007 рдЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ @ondrejhanslik , computeAxisValues тАЛтАЛ() рд░реЗрдВрдЬ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рд▓реЗрдЧрд╛ред рддреЛ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рдбреЗрдЯрд╛ рдХреЗ рдиреНрдпреВрдирддрдо / рдЕрдзрд┐рдХрддрдо рдорд╛рди рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЬрд╛рдВрдЪрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдорд╛рди рдХреНрдпрд╛ рд╣реИ рдХрдВрдкреНрдпреВрдЯрдПрдХреНрд╕рд┐рд╕рд╡реИрд▓реНрдпреВрдЬ() рдореЗрдВ, рдФрд░ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИ?

@ liuxuan30 рдореИрдВ рдХрд╕реНрдЯрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдорд╛рди рдпрд╛рдиреА рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВ

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдЪрд╛рд░реНрдЯ рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ

untitled

avoidFirstLastClippingEnabled рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдореЗрд░рд╛ рдЪрд╛рд░реНрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

screen shot 2016-12-28 at 11 02 15 pm

рдпрд╣рд╛рдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдЕрдкрдирд╛ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

private func setUpLineChartPreferences() {
        .
        .
        .
        // x-axis
        self.lineChart.xAxis.labelPosition = .bottom
        self.lineChart.xAxis.drawGridLinesEnabled = true
        self.lineChart.xAxis.granularity = 1.0
        .
        .
        .
}
private func setUpLineChart(withDataEntries entries: [ChartDataEntry]) {
        let entryCount = entries.count
        if entryCount > 0 {
            let dataSet = LineChartDataSet(values: entries, label: nil)
            dataSet.drawFilledEnabled = true
            dataSet.fillColor = .green
            dataSet.circleRadius = 5
            dataSet.drawValuesEnabled = false
            dataSet.setColor(.black)
            dataSet.highlightColor = .green
            dataSet.setCircleColor(.blue)
            let lineChartData = LineChartData(dataSet: dataSet)
            self.lineChart.data = lineChartData
            // SET UP X-AXIS
            self.lineChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: self.chartLabels)
            self.lineChart.xAxis.avoidFirstLastClippingEnabled = true
            print("NOWAK: CHART LABELS THO - \(self.chartLabels)")
            if entryCount == 1 {
                self.lineChart.xAxis.axisMinimum = -1.0
                self.lineChart.xAxis.axisMaximum = 1.0
            } else {
                self.lineChart.xAxis.axisMinimum = 0.0
                self.lineChart.xAxis.axisMaximum = Double(self.chartLabels.count - 1)
            }
            print("X MIN IS \(self.lineChart.xAxis.axisMinimum) AND X MAX IS \(self.lineChart.xAxis.axisMaximum)")
        } else {
            self.lineChart.noDataText = "No Stats For The Past \(self.currentFilter.capitalized)"
            self.lineChart.setNeedsDisplay()
        }
        switch self.currentFilter {
        case "week":
            self.weekFilterButton.backgroundColor = .blue
            self.monthFilterButton.backgroundColor = .darkGray
            self.yearFilterButton.backgroundColor = .darkGray
        case "month":
            self.monthFilterButton.backgroundColor = .blue
            self.weekFilterButton.backgroundColor = .darkGray
            self.yearFilterButton.backgroundColor = .darkGray
        case "year":
            self.yearFilterButton.backgroundColor = .blue
            self.weekFilterButton.backgroundColor = .darkGray
            self.monthFilterButton.backgroundColor = .darkGray
        default:
            print("ERROR SETTING FILTER BUTTON BACKGROUND COLORS")
        }
        self.stopLoading()
}

рдореИрдВ рд╡реИрд╕реЗ рдЪрд╛рд░реНрдЯ 3.0.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ :)

рдореБрдЭреЗ рднреАред рдЪрд╛рд░реНрдЯ 3.0.1 , XCode 8.0 рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ 3.0

рдпрджрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬреЛ рд╢рд╛рдпрдж рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬрдм рдЪрд╛рд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рдорд╛рди (рдЖрдЬ) рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ "рдмреИрд▓реВрдирдорд╛рд░реНрдХрд░" рдЯреЗрдХреНрд╕реНрдЯ "рджрд┐рд╕рдВрдмрд░" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреЗ рдПрдХреНрд╕рдПрдХреНрд╕\n500"ред

рдореЗрд░реА рддрд░рдл рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ :)

рдареАрдХ рд╣реИ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЪреЗрдХ рдХрд┐рдпрд╛ред

рдЪрд╛рд░реНрдЯ 3.0 рдореЗрдВ, x рдЕрдХреНрд╖ y рдЕрдХреНрд╖ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ y рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдмрд╕реЗ рдмрдбрд╝реА y рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдбреЗрдЯрд╛ рдХреЗ рдЕрдзрд┐рдХрддрдо рдорд╛рди рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ,
image

computeAxisValues() , рдпрд╣ рдЕрдХреНрд╖ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдорд╛рди (рдЬреЛ рдбреЗрдЯрд╛ рдХрд╛ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдорд╛рди рд╣реИ) рд╕реЗ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕ рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯрдбреЗрдореЛ - рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдбреБрдЕрд▓ YAxis рдореЗрдВ, рдпрджрд┐ рдореЗрд░реЗ x рдорд╛рди 0 рд╕реЗ 20 рддрдХ рд╣реИрдВ,
computeAxisValues() рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ 0, 20 рд▓реЗрддрд╛ рд╣реИ, рдлрд┐рд░, рдореЗрд░рд╛ labelCount рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 6 рд╣реИ, рдпрд╣ rawInterval = (max - min) / labelCount рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрдВрддрд░рд╛рд▓ 3 рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдпрд╣ 0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, 7 (рд▓реЗрдмрд▓рдХрд╛рдЙрдВрдЯ + 1) рд▓реЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ 0,3,6,9,12,15,18 рд╣реИрдВред рдЕрдВрддрд┐рдо рдПрдХреНрд╕ рдЕрдХреНрд╖ рд▓реЗрдмрд▓ 18 рд╣реИ, 20 рдирд╣реАрдВред

рдХрд╛рд░рдг isAvoidFirstLastClippingEnabled рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓ рдмрд╛рдзреНрдп рд╣реЛрдиреЗ рдкрд░ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдмрд▓ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХрд╛ x рдорд╛рди рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓реЗрдмрд▓ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП computeAxisValues() рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рд╡рд░рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ computeAxisValues() рджреЗрдЦреЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@danielgindi рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

@ liuxuan30 рд╣рдо рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП computeAxisValues рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдореИрдВ рддрд┐рдерд┐рдпреЛрдВ рдкрд░ рдПрдХ рдЪрд╛рд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП x-рдорд╛рди рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди рд╣реИрдВ, рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рджрд┐рди рдпрд╛ рдПрдХ рд╡рд░реНрд╖ рдХреЗ рдорд╣реАрдиреЗ рд╣реИрдВ), рдореБрдЭреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдФрд░ рдЖрдЦрд┐рд░реА рд▓реЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реЛрдорд╡рд╛рд░ рдФрд░ рд░рд╡рд┐рд╡рд╛рд░ рдпрд╛ 1 /1 рдФрд░ 31/1)ред

рдореИрдВ рдкрд╣рд▓реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдорд╛рди (рдЬреИрд╕реЗ рджрд┐рди рдХреЗ рдирд╛рдо рдпрд╛ рд╕реНрд╡рд░реВрдкрд┐рдд рджрд┐рди) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ:

    xAxis.axisMinimum = 0
    xAxis.axisMaximum = Double(xValues.count - 1)
    xAxis.valueFormatter = IndexAxisValueFormatter(values: xValues)

рдореБрдЭреЗ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдПрдХ рдмреЗрд╣рддрд░ computeAxisValues рдЬреЛ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдмрд▓ рдФрд░ рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ рдмреАрдЪ рд▓реЗрдмрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдордЭред рдПрдХреНрд╕ рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рднреА рдмрдЧ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рдУрд╡рд░рд▓реИрдкред
рд╡рд░реНрддрдорд╛рди рддрд░реНрдХ рдкрд╣рд▓реЗ рдиреНрдпреВрдирддрдо/рдЕрдзрд┐рдХрддрдо рдорд╛рди рдЬрд╛рдирдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдЕрдВрддрд░рд╛рд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдФрд░ рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдорд╛ рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд░реНрддрдорд╛рди computeAxisValues() рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ / рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓ xAxis.axisMaximum рд╣реИред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ @danielgindi рдХреЗ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ computeAxisValues тАЛтАЛтАЛтАЛ() рдХреЗ рд▓рд┐рдП 'рдЯреНрд╡реАрдХ' рдХреЗ рдмрдЬрд╛рдп 'рдУрд╡рд░рд░рд╛рдЗрдб' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛/рдЕрдВрддрд┐рдо рдорд╛рди рд╣рдореЗрд╢рд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд▓реЗрдмрд▓ рдХреЛ рдмрд╛рдзреНрдп рдпрд╛ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐, рдЖрдк рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП setLabelCount(count, forceLabelEnabled) рдЕрдкрдиреЗ x рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдЖрдзреЗ рдХреЗ рдмрд░рд╛рдмрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддрд░реНрдХ рддрдм рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ:

        // force label count
        if axis.isForceLabelsEnabled
        {
            interval = Double(range) / Double(labelCount - 1)

            // Ensure stops contains at least n elements.
            axis.entries.removeAll(keepingCapacity: true)
            axis.entries.reserveCapacity(labelCount)

            var v = yMin

            for _ in 0 ..< labelCount
            {
                axis.entries.append(v)
                v += interval
            }

            n = labelCount
        }

рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕рд╛рдзрд╛рд░рдг рдЧрдгрд┐рдд рд╣реИред

@ liuxuan30 рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВ? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХреНрд╕-рдЕрдХреНрд╖ рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд┐рдирд╛рдВрдХ рд╣реИрдВ

@ Vaibhav-varshaaweblabs x рдЕрдХреНрд╖ рдЕрдм рдХреЗрд╡рд▓ рдЪрд╛рд░реНрдЯ 3.x рдореЗрдВ рдбрдмрд▓ рд▓реЗ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдбрдмрд▓ рдХреЗ рдмрдЬрд╛рдп рд▓реЗрдмрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП valueFormatter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, valueFormatter рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рдЬрд╝реВрдорд┐рдВрдЧ/рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯ 3.0.2 рдореЗрдВ рд╣рд▓ рдвреВрдВрдврд╛ рд╣реИ? рдореИрдВ рдЕрдкрдиреЗ рдПрдХреНрд╕-рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рджрд┐рдирд╛рдВрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдВрддрд┐рдо рд▓реЗрдмрд▓ рдХреЛ рдХрднреА-рдХрднреА рдЧрд╛рдпрдм рд╣реЛрддреЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдпрд╣ isAvoidFirstLastClippingEnabled рд╕реЗрдЯ рд╕реЗ true ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ # 2563 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@ vabhav-varshaaweblabs @raudabaugh : рдЖрдк рд▓реЛрдЧреЛрдВ рдиреЗ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрдЯрдбрд╛рдЯрд╛рдХрд╛рдЙрдВрдЯ рд╡рд┐рдзрд┐ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯ рдпрд╛ рдбрдмрд▓ рдорд╛рдиреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИред
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ, рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж

bottomAxis.setLabelCount (рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБред рдЖрдХрд╛рд░ (), рд╕рддреНрдп); рдФрд░ рдЕрдВрддрд┐рдо рдЧрдгрдирд╛ рдХреЛ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЬрд┐рди рд░рд╛рдЗрдЯ рднреА рд╕реЗрдЯ рдХрд░реЗрдВред

    lineChart?.xAxis.setLabelCount(arrOfMonth.count, force: true)

рдпрд╣ рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдХреЗ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ - рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Bharati555 picture Bharati555  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

deepumukundan picture deepumukundan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Aungbandlab picture Aungbandlab  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

guanyanlin picture guanyanlin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BrandonShega picture BrandonShega  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ