Charts: Ось X LineChart - Как всСгда ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈ послСднюю ΠΌΠ΅Ρ‚ΠΊΡƒ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я столкнулся, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послСдняя ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π° оси X Π½Π΅ отобраТаСтся. Π­Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° послСдниС 30 Π΄Π½Π΅ΠΉ, поэтому я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ появился послСдний ярлык, 25 дСкабря. Π•ΡΡ‚ΡŒ Π»ΠΈ способ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ мою Π»ΠΈΠ½Π΅ΠΉΠ½ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ всСгда ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈ послСднюю ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° оси X? МСня Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠ½ вычисляСт ΠΈΠ»ΠΈ пропускаСт ярлыки ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ - я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π» Ρƒ мСня

ВсС 21 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ avoidFirstLastClippingEnabled , ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - false.

    /// 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 Удалось Π»ΠΈ Π²Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡƒΡŽ Π½Π° 2-ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ? ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ

avoidFirstLastClippingEnabled Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚. ПослСдняя этикСтка всСгда обрСзаСтся

Если я загляну Π² исходный ΠΊΠΎΠ΄, записи оси Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² AxisRendererBase.computeAxisValues ΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ эта функция ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии.

https://github.com/danielgindi/Charts/issues/2007 каТСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ с этим?
@ondrejhanslik ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ computeAxisValues ​​() Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для вычислСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ большС, Ρ‡Π΅ΠΌ минимальноС / максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅. Π’Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊΠΎΠ΅ Ρƒ вас минимальноС / максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² computeAxisValues ​​(), ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ минимальноС / максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρƒ Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…?

@ liuxuan30 Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ настраиваСмый массив строк Π² качСствС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ оси X, Ρ‚.Π΅. Π΄Π°Ρ‚

Π’ΠΎΡ‚ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ ΠΌΠΎΠ΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹

untitled

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит моя Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈ установкС avoidFirstLastClippingEnabled Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true:

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

Π’ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ для настройки оси X:

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()
}

ΠšΡΡ‚Π°Ρ‚ΠΈ, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Charts 3.0.1 :)

Π’ΠΎ ΠΆΠ΅ самоС. Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ 3.0.1 , XCode 8.0 ΠΈ Swift 3.0

Если Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этой ситуации Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я полагаю, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, вСроятно, ΠΈΠΌΠ΅Π» Π±Ρ‹ смысл, состоял Π±Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (сСгодня), Ρ‡Ρ‚ΠΎΠ±Ρ‹ отобразился Β«BalloonMarkerΒ» с тСкстом Β«Dec XX \ n500 ".

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π° ΠΌΠΎΠ΅ΠΉ сторонС :)

ОК, я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ».

Π’ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ 3.0 ось x Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ ось y, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ оси Y, самая большая ΠΌΠ΅Ρ‚ΠΊΠ° оси Y мСньшС максимального значСния Π΄Π°Π½Π½Ρ‹Ρ… Π²
image

Π’ computeAxisValues() ΠΎΠ½ считываСт минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· минимального / максимального значСния оси (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ / ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΈ вычисляСт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» для получСния ΠΌΠ΅Ρ‚ΠΎΠΊ оси x.

НапримСр, Π² ChartsDemo - Line Chart Dual YAxis, Ссли ΠΌΠΎΠΈ значСния x ΠΎΡ‚ 0 Π΄ΠΎ 20,
computeAxisValues() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 0, 20 Π² качСствС минимального / максимального значСния, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΉ labelCount ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π΅Π½ 6, ΠΎΠ½ вычисляСт rawInterval = (max - min) / labelCount , ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π±ΡƒΠ΄Π΅Ρ‚ 3. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ начинаСтся с 0, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 7 (labelCount + 1) ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ 0,3,6,9,12,15,18. ПослСдняя ΠΌΠ΅Ρ‚ΠΊΠ° оси x - 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 , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈ послСднюю ΠΌΠ΅Ρ‚ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΈ ΠΎΡ‡Π΅Π½ΡŒ распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования.

Π― понимаю. По-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΅ΡΡ‚ΡŒ ошибки с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ оси x, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠΊ.
ВСкущая Π»ΠΎΠ³ΠΈΠΊΠ° сначала Π·Π½Π°Π΅Ρ‚ минимальноС / максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ осСй. Однако Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 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 Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли значСния оси x находятся Π² строковом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅? Π’ ΠΌΠΎΠ΅ΠΌ случаС значСния оси x - это Π΄Π°Ρ‚Ρ‹ Π² строковом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

@ vaibhav-varshaaweblabs ось x Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’ΠžΠ›Π¬ΠšΠž Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ 3.x, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ valueFormatter для отобраТСния ΠΌΠ΅Ρ‚ΠΊΠΈ вмСсто Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ. Однако valueFormatter ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТным, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ / ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ нашСл Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этого Π² Charts 3.0.2? Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ строки Π΄Π°Ρ‚Ρ‹ для своих ΠΌΠ΅Ρ‚ΠΎΠΊ оси x ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ послСдняя ΠΌΠ΅Ρ‚ΠΊΠ° исчСзаСт, Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с воспроизвСдСниСм. Π­Ρ‚ΠΎ с isAvoidFirstLastClippingEnabled установлСнным Π² true . Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ это Π±Ρ‹Ρ‚ΡŒ связано с # 2563?

@ vaibhav-varshaaweblabs @raudabaugh : Как Π²Π°ΠΌ, рСбята, ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ строки Π½Π° оси X, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ setDataCount ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ значСния int ΠΈΠ»ΠΈ double для X ΠΈ Y.
ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ, Π·Π°Ρ€Π°Π½Π΅Π΅ спасибо

bottomAxis.setLabelCount (entry.size (), истина); Π° Ρ‚Π°ΠΊΠΆΠ΅ установитС ΠΏΡ€Π°Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ послСдний счСтчик.

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

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ - я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π» Ρƒ мСня

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ