首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SwiftUI图表绘制函数?

如何使用SwiftUI图表绘制函数?
EN

Stack Overflow用户
提问于 2022-11-25 15:28:52
回答 1查看 44关注 0票数 -1

我希望使用4000+图表绘制函数y=(4000+(120*x))*1.6) SwiftUI。让我说,我想把函数从x=1绘制成x=1000。我可以从创建var x=1开始,然后使用for循环:对于1.1000计算y,将结果添加到包含图的所有数据的var中,将1添加到x并重复循环。然后,我可以使用SwiftUI图表LineMark绘制图形。问题是我不知道该怎么做。我知道编程是如何工作的,因为我在年轻的时候就学会了scratch,但是我还不太懂Swift。

另一个问题是,从另一个角度看,数字是变量。我有一个名为SliderView的视图,在这里我创建了变量,您可以用滑块修改它们,我有一个名为ChartView的视图,在这里我想要计算和显示图形。如何在SliderView中使用ChartView中的变量,以及如何在vars中的数字发生变化时更新/刷新图表?

我现在是这样在SliderView中声明vars的:

代码语言:javascript
复制
@State var startingPrice: Double = 4000
@State var manufacturingPrice: Double = 120
@State var profitMargin: Double = 1.6

我试着在互联网上搜索答案,但是SwiftUI图表是比较新的,我认为,我找不到任何关于如何用它来绘制函数的教程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-25 17:23:57

您可以将所有变量放在一个模型中并创建一个计算属性。

代码语言:javascript
复制
struct FunctionPlotModel{
    var startingPrice: Double = 4000
    var manufacturingPrice: Double = 120
    var profitMargin: Double = 1.6
    
    var startPoint: Int = 1
    var endPoint: Int = 1000
    
    /// Values created by formula
    var values: [(x: Double, y: Double)]{
        (startPoint...endPoint).map { x in
            let y: Double = (Double(startingPrice + Double(manufacturingPrice * Double(x)) * profitMargin) / Double(x))
            return (Double(x), y)
        }
    }
}

然后按需要绘制并使用变量。

代码语言:javascript
复制
import SwiftUI
import Charts

@available(iOS 16.0, *)
struct FunctionPlotView: View {
    @State var model: FunctionPlotModel = .init()
    var body: some View {
        VStack{
            Slider(value: $model.startingPrice, in: 100...10000)
            Slider(value: $model.manufacturingPrice, in: 100...200)
            Slider(value: $model.profitMargin, in: 0.5...5)
            
            Chart {
                ForEach(model.values, id:\.x){ val in
                    LineMark(x: .value("x", val.x), y: .value("y", val.y))
                }
            }.padding()
        }
    }
}
@available(iOS 16.0, *)
struct FunctionPlotView_Previews: PreviewProvider {
    static var previews: some View {
        FunctionPlotView()
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74574931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档