答案 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中进行了描述。