【问题标题】:SwiftUI IOS Dynamic CorePlot DataSwiftUI IOS 动态 CorePlot 数据
【发布时间】:2021-08-06 15:32:57
【问题描述】:

如何在我的 CorePlot 中实现动态数据?我希望我的图表看起来像这样:

我应该如何实现我的 JSON API 并解码这些值以将其设置为 X 轴?

JSON API:https://dcmicrogridiep.000webhostapp.com/datamainjson.php

这是我使用硬编码值的 CorePlot 图的示例代码。

import Foundation
import SwiftUI
import CorePlot

class CalculatePlotData: ObservableObject {
    
    var plotDataModel: PlotDataClass? = nil
    

    func plotYEqualsX()
    {
        
        //set the Plot Parameters
        plotDataModel!.changingPlotParameters.yMax = 10.0
        plotDataModel!.changingPlotParameters.yMin = -5.0
        plotDataModel!.changingPlotParameters.xMax = 10.0
        plotDataModel!.changingPlotParameters.xMin = -5.0
        plotDataModel!.changingPlotParameters.xLabel = "x"
        plotDataModel!.changingPlotParameters.yLabel = "y"
        plotDataModel!.changingPlotParameters.lineColor = .red()
        plotDataModel!.changingPlotParameters.title = " y = x"
        
        plotDataModel!.zeroData()
        var plotData :[plotDataType] =  []
        
        
        for i in 0 ..< 120 {

            //create x values here

            let x = -2.0 + Double(i) * 0.2

        //create y values here

        let y = x * 8


            let dataPoint: plotDataType = [.X: x, .Y: y]
            plotData.append(contentsOf: [dataPoint])
        
        }
        
        plotDataModel!.appendData(dataPoint: plotData)
        
        
    }
    
    
    func ploteToTheMinusX()
    {
        
        //set the Plot Parameters
        plotDataModel!.changingPlotParameters.yMax = 10
        plotDataModel!.changingPlotParameters.yMin = -3.0
        plotDataModel!.changingPlotParameters.xMax = 10.0
        plotDataModel!.changingPlotParameters.xMin = -3.0
        plotDataModel!.changingPlotParameters.xLabel = "x"
        plotDataModel!.changingPlotParameters.yLabel = "y = exp(-x)"
        plotDataModel!.changingPlotParameters.lineColor = .blue()
        plotDataModel!.changingPlotParameters.title = "exp(-x)"

        plotDataModel!.zeroData()
        var plotData :[plotDataType] =  []
        for i in 0 ..< 60 {

            //create x values here

            let x = -8.0 + Double(i) * 5

        //create y values here

        let y = exp(-x)
            
            let dataPoint: plotDataType = [.X: x, .Y: y]
            plotData.append(contentsOf: [dataPoint])
        }
        
        plotDataModel!.appendData(dataPoint: plotData)
        
        return
    }
    
}

【问题讨论】:

    标签: core-plot


    【解决方案1】:

    如果您不需要应用程序中其他地方的实际日期值,您可以直接将 API 提供的“时间”字段中的数字发送到绘图。您将根据这些值设置绘图范围,并使用正确的参考日期定义标签格式化程序以正确显示日期值。查看 DatePlot 示例应用程序,了解一个简单的 Swift 示例。

    【讨论】:

    • 感谢您的推荐,您是否还有关于从 API 中实现和解码用于 CorePlot 集成的值的指南?
    • 您必须将绘图数据转换为 NSNumberdouble 值,具体取决于您决定实施的数据源方法。如何做到这一点实际上取决于您接收数据的格式。在许多情况下,您根本不需要进行任何转换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多