使用SwiftUI和图表库组合两个x-y图
我正在使用SwiftUI和图表库(即导入图表) 制作一条单曲线没问题。 但是我想在图表上画两条独立的线 但我不知道如何做到这一点 我使用以下行调用结构:使用SwiftUI和图表库组合两个x-y图,swiftui,ios-charts,Swiftui,Ios Charts,我正在使用SwiftUI和图表库(即导入图表) 制作一条单曲线没问题。 但是我想在图表上画两条独立的线 但我不知道如何做到这一点 我使用以下行调用结构: myLineChartSwiftUI(myXminny: self.$myXminny, myXmaxy: self.$myXmaxy) 我添加了第二行设置(即数据点2、设置2、颜色2等) 我该怎么把这两行组合起来,然后再返回到绘图中呢 非常感谢您的帮助 我的第一个swiftUI和第一个图表程序: struct myLineChartSwif
myLineChartSwiftUI(myXminny: self.$myXminny, myXmaxy: self.$myXmaxy)
我添加了第二行设置(即数据点2、设置2、颜色2等)
我该怎么把这两行组合起来,然后再返回到绘图中呢
非常感谢您的帮助
我的第一个swiftUI和第一个图表程序:
struct myLineChartSwiftUI : UIViewRepresentable
{
@Binding var myXminny : Double
@Binding var myXmaxy : Double
let lineChart = LineChartView()
func makeUIView(context: UIViewRepresentableContext<myLineChartSwiftUI>) -> LineChartView {
setUpChart()
return lineChart
}
func updateUIView(_ uiView: LineChartView, context: UIViewRepresentableContext<myLineChartSwiftUI>) {
}
func setUpChart() {
let dataSets = [getLineChartDataSet()]
let data = LineChartData(dataSets: dataSets)
lineChart.data = data
}
func getChartDataPoints(sessions: [Double], accuracy: [Double]) -> [ChartDataEntry] {
var dataPoints: [ChartDataEntry] = []
for count in (0..<sessions.count) {
dataPoints.append(ChartDataEntry.init(x: Double(sessions[count]), y: accuracy[count]))
}
return dataPoints
}
func getLineChartDataSet() -> LineChartDataSet {
let dataPoints = getChartDataPoints(sessions: [myXminny,myXmaxy], accuracy: [myXminny,myXmaxy])
let set = LineChartDataSet(entries: dataPoints, label: "DataSet")
set.lineWidth = 2
set.drawValuesEnabled = false
set.drawCirclesEnabled = false
//set.circleRadius = 4
let color = ChartColorTemplates.vordiplom()[4]
set.setColor(color)
let dataPoints2 = getChartDataPoints(sessions: [myXminny/2,myXmaxy/2], accuracy: [myXminny/2,myXmaxy/2])
let set2 = LineChartDataSet(entries: dataPoints2, label: "DataSet2")
set2.lineWidth = 2
set2.drawValuesEnabled = false
set2.drawCirclesEnabled = false
let color2 = ChartColorTemplates.vordiplom()[4]
set2.setColor(color2)
let data = LineChartData(dataSets: [set, set2])
return set
}
}
struct myLineChartSwiftUI:UIViewRepresentable
{
@绑定变量myXminny:Double
@绑定变量myXmaxy:Double
设lineChart=LineChartView()
func makeUIView(上下文:UIViewRepresentableContext)->LineChartView{
设置图表()
返回折线图
}
func updateUIView(uiView:LineChartView,context:UIViewRepresentableContext){
}
func setUpChart(){
让数据集=[getLineChartDataSet()]
let data=LineChartData(数据集:数据集)
lineChart.data=数据
}
func getChartDataPoints(会话:[Double],精度:[Double])->[ChartDataEntry]{
var数据点:[ChartDataEntry]=[]
对于(0..LineChartDataSet)中的计数{
let dataPoints=getChartDataPoints(会话:[myXminny,myXmaxy],精度:[myXminny,myXmaxy])
设为set=LineChartDataSet(条目:数据点,标签:“数据集”)
set.lineWidth=2
set.drawValuesEnabled=false
set.drawCircleEnabled=false
//set.circleRadius=4
让color=ChartColorTemplates.vordiplom()[4]
set.setColor(颜色)
let dataPoints2=getChartDataPoints(会话:[myXminny/2,myXmaxy/2],精度:[myXminny/2,myXmaxy/2])
设set2=LineChartDataSet(条目:dataPoints2,标签:“DataSet2”)
set2.lineWidth=2
set2.drawValuesEnabled=false
set2.drawCircleEnabled=false
让color2=ChartColorTemplates.vordiplom()[4]
set2.setColor(color2)
let data=LineChartData(数据集:[set,set2])
返回集
}
}
对于那些对解决方案感兴趣的人,代码如下:
import SwiftUI
import Charts
struct GraphSwiftUI: View {
var body: some View {
GeometryReader { p in
VStack {
LineChartSwiftUI()
//use frame to change the graph size within your SwiftUI view
.frame(width: p.size.width, height: p.size.width, alignment: .center)
}
}
}
}
struct LineChartSwiftUI: UIViewRepresentable {
let lineChart = LineChartView()
func makeUIView(context: UIViewRepresentableContext<LineChartSwiftUI>) -> LineChartView {
setUpChart()
return lineChart
}
func updateUIView(_ uiView: LineChartView, context: UIViewRepresentableContext<LineChartSwiftUI>) {
}
func setUpChart() {
let dataSets = [getLineChartDataSet()]
let data = LineChartData(dataSets: dataSets)
}
func getChartDataPoints(sessions: [Int], accuracy: [Double]) -> [ChartDataEntry] {
var dataPoints: [ChartDataEntry] = []
for count in (0..<sessions.count) {
dataPoints.append(ChartDataEntry.init(x: Double(sessions[count]), y: accuracy[count]))
}
return dataPoints
}
func getLineChartDataSet() -> LineChartDataSet {
let dataPoints = getChartDataPoints(sessions: [0,1,5], accuracy: [0, 2, 8])
let set = LineChartDataSet(entries: dataPoints, label: "DataSet")
set.lineWidth = 3
let color = ChartColorTemplates.vordiplom()[4]
set.setColor(color)
let dataPoints2 = getChartDataPoints(sessions: [0,1,5], accuracy: [50,10,15])
let set2 = LineChartDataSet(entries: dataPoints2, label: "DataSet2")
set2.lineWidth = 2
set2.drawValuesEnabled = true
set2.drawCirclesEnabled = true
let color2 = ChartColorTemplates.vordiplom()[3]
set2.setColor(color2)
let data = LineChartData(dataSets: [set, set2])
lineChart.data = data
return set
}
}
struct GraphSwiftUI_Previews: PreviewProvider {
static var previews: some View {
GraphSwiftUI()
}
}
导入快捷界面
进口图表
结构图wiftui:视图{
var body:一些观点{
GeometryReader{p in
VStack{
LineChartSwiftUI()
//使用frame更改SwiftUI视图中的图形大小
.frame(宽度:p.size.width,高度:p.size.width,对齐:。中心)
}
}
}
}
结构LineChartSwiftUI:UIViewRepresentable{
设lineChart=LineChartView()
func makeUIView(上下文:UIViewRepresentableContext)->LineChartView{
设置图表()
返回折线图
}
func updateUIView(uiView:LineChartView,context:UIViewRepresentableContext){
}
func setUpChart(){
让数据集=[getLineChartDataSet()]
let data=LineChartData(数据集:数据集)
}
func getChartDataPoints(会话:[Int],精度:[Double])->[ChartDataEntry]{
var数据点:[ChartDataEntry]=[]
对于(0..LineChartDataSet)中的计数{
让dataPoints=getChartDataPoints(会话:[0,1,5],精度:[0,2,8])
设为set=LineChartDataSet(条目:数据点,标签:“数据集”)
set.lineWidth=3
让color=ChartColorTemplates.vordiplom()[4]
set.setColor(颜色)
让dataPoints2=getChartDataPoints(会话:[0,1,5],精度:[50,10,15])
设set2=LineChartDataSet(条目:dataPoints2,标签:“DataSet2”)
set2.lineWidth=2
set2.drawValuesEnabled=true
set2.drawCircleEnabled=true
让color2=ChartColorTemplates.vordiplom()[3]
set2.setColor(color2)
let data=LineChartData(数据集:[set,set2])
lineChart.data=数据
返回集
}
}
结构图wiftui\u预览:PreviewProvider{
静态var预览:一些视图{
GraphSwiftUI()
}
}