图表 - 散点图 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
我想在 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