如何在F#中绘制数据系列?

时间:2010-07-18 16:45:15

标签: matlab math charts f#

结束FSHUBLethalLavaLand说,

  

让我策划我的价值观!

所以问题是,如何使用内置的.NET 4.0控件在F#中绘制数据系列?

3 个答案:

答案 0 :(得分:13)

由于我最近一直在使用.NET 4.0中内置的Microsoft Charting Controls(并喜欢它的每一分钟!),我想我会回答我自己的问题......

#r "System.Windows.Forms.DataVisualization"

open System.Windows.Forms
open System.Windows.Forms.DataVisualization.Charting

type LineChartForm( title, xs : float seq ) =
    inherit Form( Text=title )

    let chart = new Chart(Dock=DockStyle.Fill)
    let area = new ChartArea(Name="Area1")
    let series = new Series()
    do series.ChartType <- SeriesChartType.Line
    do xs |> Seq.iter (series.Points.Add >> ignore)
    do series.ChartArea <- "Area1"
    do chart.Series.Add( series )
    do chart.ChartAreas.Add(area)
    do base.Controls.Add( chart )

let main() =
    let data = seq { for i in 1..1000 do yield sin(float i / 100.0) }
    let f = new LineChartForm( "Sine", data )
    f.Show()

main()

答案 1 :(得分:2)

不要忘记,你不必在F#中做所有事情。

您可以将所有F#计算汇总到一个库或类中,然后以您想要的任何“前端”语言使用它:

  

例如,您可以轻松地与F#后端结婚   使用WPF或Silverlight或C#   的WinForms。

答案 2 :(得分:2)

您可能会欣赏我的parametric plot in F#,它使用.NET 4中的新图表功能可视化捕食者 - 猎物动态。原始的5行Mathematica解决方案变为19行F#代码。对于通用语言来说还不错!

然而,这是一次性解决方案,因此在F#interactive中不是很有用。要以交互方式重用相同的功能,您需要处理线程问题(将数据与处理持久GUI的UI线程进行编组),就像F# for Visualization产品一样。该技术也在我的Visual F# 2010 for Technical Computing book中进行了描述。