Графики - ScatterChart 1: 1 Axis Scale - PullRequest
0 голосов
/ 01 августа 2020

Я хочу отобразить некоторые данные x и y внутри ScatterChartView, но я не могу понять, как я могу установить одинаковое масштабирование осей x и y.

I пытались использовать высоту и ширину диаграммы для вычисления минимального и максимального значений обеих осей независимо, но это было довольно беспорядочно и не привело ни к какому хорошему результату.

Есть ли у вас какие-либо предложения? Я что-нибудь пропустил в документации?

Ниже мое представление SwiftUI, которое я использую в качестве диаграммы разброса.

import SwiftUI
import Charts

struct ScatterPlot: UIViewRepresentable {
    typealias UIViewType = ScatterChartView

    private let plot = ScatterChartView()

    func makeUIView(context: Context) -> ScatterChartView {
        setUpPlot()
        return plot
    }

    func updateUIView(_ uiView: ScatterChartView, context: Context) {}

    private func setUpPlot() {
        plot.rightAxis.enabled = false
    
        let dataSets = [getScatterPlotDataSet()]
        let data = ScatterChartData(dataSets: dataSets)
    
        plot.data = data
    }

    private func getScatterPlotDataSet() -> ScatterChartDataSet {
        let entries: [ChartDataEntry] = [ChartDataEntry(x: 0, y: 0), ChartDataEntry(x: 1, y: 1)]
        let dataSet = ScatterChartDataSet(entries: entries)
    
        return dataSet
    }
}

Заранее спасибо.

1 Ответ

2 голосов
/ 01 августа 2020
• 1000
    chart.rightAxis.enabled = false
    
    let width = chart.frame.width
    let height = chart.frame.height
    
    let maxValue: Double = 1.0
    
    chart.xAxis.granularity = 0.5
    chart.leftAxis.granularity = 0.5
    
    chart.leftAxis.axisMaximum = maxValue
    chart.xAxis.axisMinimum = 0
    chart.leftAxis.axisMinimum = 0
    chart.xAxis.axisMaximum = Double(width / height) * maxValue

введите описание изображения здесь

...