FSharpChart 图表应用
大家好,我是Keith Battocchi,我一直致力于如何让F#更容易地实现数据化编程。在我发布的第一个Blog中,我强调了本月早些时候Don 在他的Blog中已经提到的FSharpChart包中的一些基本功能。正像Don所提到的,这个库包含了位于System.Windows.Forms.DataVisualization.Charting命名空间中类型的F#友好包,这让F# interactive 更容易的和图表数据进行交互(您也可以 在MSDN图表控件部分中看到关于基本控件的详细信息,还有教程)。只要加载脚本库:FSharpChart.fsx,打开Samples.Charting 命名空间,就可以开始了。
#load "FSharpChart.fsx"
open Samples.Charting
基本特点:
FSharpChart支持System.Windows.Forms.DataVisualization.Charting命名空间中所有的图表类型,如常见的线形图、条形图、更奇特的Kagi和Renko图表,等等。每种类型的图表可用通过使用FSharpChart类型中的静态方法来创建, 您可以通过IntelliSense去浏览:
这种方法可以更容易地把数据直接导入到图表中。另外,FsharpChart库为F# Interactive增加了一个自定义的打印机,这样可以自动地在自己的窗口中打开每一个图表控件。例如:在FSI中执行如下代码:
[for x in 0.0 .. 0.1 .. 6.0 -> sin x + cos (2.0 * x)]
|> FSharpChart.Line
将会产生如下窗口:
每个图表控件也包含一个上下文菜单,这使得易于复制图表到剪贴板,或者保存图表到一个文件,或者查看/修改详细的图表属性:
系列:
图表创建方法的重载允许用许多不同的方式来指定数据。特别是,大部分的图表允许数据被下面的任何机制来指定 :
- 只有一个y值序列(x的值隐式地从1增长到序列的长度,正像上面的图表所示)
- 独立的x和y值序列
- 一个(x,y)序列对
- 一个System.Iobservable 类型的y值或者(x,y)对,允许图表随着更多数据被发现而实时更新
另外,x和y的值不受浮点数的限制—— 他们只需被指定为一个实现了System.IConvertible 接口的类的值即可。这意味着用户能够很容易地创建一个已经被分好类的数据图表中:
[("A",1); ("B",3); ("C",2)]
|> FSharpChart.Pie
同样,图表也很容易对日期和时间进行积值。
open System
let r = Random()
[for d in -30 .. 0 ->
(DateTime.Today.AddDays(float d), r.NextDouble())]
|> FSharpChart.Column
希望这些信息足够使你在F#中用FSharpChart库进行交互式可视化操作。我会在我接下来的blog中更多介绍关于FSharpChart库的高级功能。在那之前,快乐地去创建图表吧!
原文链接:http://blogs.msdn.com/b/fsharpteam/archive/2011/04/15/getting-started-with-fsharpchart.aspx