图表 - 散点图 1:1 轴刻度

Charts - ScatterChart 1:1 Axis Scale

我想在 ScatterChartView 中绘制一些 x 和 y 数据,但我似乎无法弄清楚如何将 x 轴和 y 轴设置为等比例缩放。

我曾尝试使用图表的高度和宽度来独立计算两个轴的最小值和最大值,但这非常混乱并且没有产生任何好的结果。

你有什么建议吗?我是否忽略了文档中的任何内容?

下面是我用作散点图的 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
    }
}

提前致谢。

我尝试计算宽高比得到这个结果

请注意我在这个例子中使用了故事板,你需要检查你的 swiftUI 代码中的图表宽度和高度是否正确

    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