使用SwiftUI和图表库组合两个x-y图

使用SwiftUI和图表库组合两个x-y图,swiftui,ios-charts,Swiftui,Ios Charts,我正在使用SwiftUI和图表库(即导入图表) 制作一条单曲线没问题。 但是我想在图表上画两条独立的线 但我不知道如何做到这一点 我使用以下行调用结构: myLineChartSwiftUI(myXminny: self.$myXminny, myXmaxy: self.$myXmaxy) 我添加了第二行设置(即数据点2、设置2、颜色2等) 我该怎么把这两行组合起来,然后再返回到绘图中呢 非常感谢您的帮助 我的第一个swiftUI和第一个图表程序: struct myLineChartSwif

我正在使用SwiftUI和图表库(即导入图表)

制作一条单曲线没问题。 但是我想在图表上画两条独立的线

但我不知道如何做到这一点

我使用以下行调用结构:

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