Types F#绘制活动图表可观察到的实现

Types F#绘制活动图表可观察到的实现,types,charts,f#,signature,observable,Types,Charts,F#,Signature,Observable,我正在尝试从FSharp Charting实现实时图表。文档中给出了实线图的类型签名,如下所示: static member LiveChart.Line : data:IObservable<#seq<'a1 * 'a2>> * ?Name:string * ?Title:string * ?Color:Color * ?XTitle:string * ?YTitle:string -> GenericChart (requires 'a1 :> key a

我正在尝试从FSharp Charting实现实时图表。文档中给出了实线图的类型签名,如下所示:

static member LiveChart.Line : data:IObservable<#seq<'a1 * 'a2>> * ?Name:string * ?Title:string * ?Color:Color * ?XTitle:string * ?YTitle:string -> GenericChart (requires 'a1 :> key and 'a2 :> value)
static member LiveChart.Line:data:IObservable*?Name:string*?Title:string*?Color:Color*?XTitle:string*?YTitle:string->GenericChart(需要'a1:>键和'a2:>值)

我有一个IObservable,它会发出一系列带有时间和值的数据,但到底什么是IObservable?!为什么这个函数的参数是一个巨大的元组呢?

你需要一个可观察的对象,它发出一系列的
DateTime*float
值,而不是一个数据点(我想,不能用一个点制作很多折线图)

如果你一次只有一个可观测数据点,我想你要做的是有另一个可观测数据点,它将在一个序列中积累一系列的观测数据,并将其用作图表的数据源


该函数的参数是一个“元组”,因为它允许使用可选参数(否则跳过它们)。使用静态成员是一种常见的模式,以便从可选参数或重载等功能中获益,而常规let-bound F#函数不支持这些功能。

前面提到的Observable和Live Chart不起作用,但我写了一个简单的示例:

open System
open System.Windows.Forms
open System.Reactive.Linq
open FSharp.Charting

[<EntryPoint>]
[<STAThread>]
let main argv = 

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault false

    let form = new Form(Visible = true, TopMost = true, 
                            Width = 700, Height = 500)
    let rand = new Random()
    let obs = Observable.Interval(TimeSpan.FromSeconds(1.0)).
                 ObserveOn(WindowsFormsSynchronizationContext.Current)
                |> Observable.map(fun _ -> DateTime.Now.ToShortTimeString(),rand.Next(0,21))

    let one  = LiveChart.FastLineIncremental(obs,Name="Simple Example")

    one.ShowChart()
    Application.Run form
    0 
开放系统
打开System.Windows.Forms
开放系统.Reactive.Linq
打开FSharp.Charting
[]
[]
让主argv=
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault错误
让表单=新表单(可见=真,最顶端=真,
宽度=700,高度=500)
设rand=newrandom()
设obs=可观测的时间间隔(时间跨度为秒(1.0))。
ObserveOn(WindowsFormsSynchronizationContext.Current)
|>Observable.map(fun u->DateTime.Now.ToShortTimeString(),rand.Next(0,21))
设one=LiveChart.FastLineIncremental(obs,Name=“简单示例”)
一,ShowChart()
申请表格
0
也许这段代码将有助于解决您的问题。工作几分钟后:


如果我作为一个新手犯了严重的错误,我希望更有经验的网站成员会纠正我。如果我给出了不好的建议,我会提前道歉

看哪?这几乎不是一个例子。它讨论了可观察性,但没有说明它们是如何实现的。我现在有一个可观测的东西,它会发出DateTime*浮点。如何将其插入LiveChart.Line?