F#画图

用F#语言使用FSharp.Charting开源库画图

  本文源程序来自F#DeepDives中第二部分第4节,做个部分修改,去掉了数值模拟函数部分的功能,旨在学习用F#和Charting开源库画图。文中附带一段测试代码,文件是脚本格式.fsx,如有错误望改正。

  可按下面步骤使用:

1.新建.fsx文件,导入<FSharp.Charting和DataVisualization包。

2.设置横坐标长度T和采样个数N. 

3.将所画的数据绑定到paths上,数据为二(n)维浮点型数组。

4.用plot_path函数将相应的线条颜色绑定到相应线条数据上,并赋值给path_charts;设置纵坐标的最大最小值。

5.设置图的主标题,并对横/纵坐标设置相应的格式,最后画图。

6.全选代码,按Alt+Enter运行。  


完整代码:

<pre name="code" class="plain">#r @"..\packages\FSharp.Charting.0.90.6\lib\net40\FSharp.Charting.dll"  
#r "System.Windows.Forms.DataVisualization.dll"  
  
open System  
open System.Drawing  
open FSharp.Charting  
  
let T = 100.0  
let N = 100  
let paths = [|[|for i in 1.0..100.0 do yield i*(i+1.0)|];[|100.0..100.0..10000.0 |]|]//数组中的值是纵坐标  
///将所给数据画出。T:横坐标长度,N:横坐标采样个数,path:所给数据(二维float数组),color:线条颜色  
let plot_path (T:float) (N:int) (path:float array) color =  
    let dt = T/ (float N)  
    path |> Array.mapi (fun n p -> ((float n)*dt, p))   
    |> Chart.Line   
    |> Chart.WithStyling(Color = color, BorderWidth = 2)  
let colors = [| Color.Green; Color.Red|]//线条颜色  
let path_charts = Array.map2 (plot_path T N) paths colors//将相应的线条颜色绑定到线条数据上  
let mx, mn = paths |> Array.fold (fun (mx,mn) p ->   
                                (max mx (Array.max p), min mn (Array.min p)))   
                                (Double.MinValue,Double.MaxValue)  
//图标题  
let title = sprintf  
                    "Testing, T=%.2f, N=%d" T N  
let chart = Chart.Combine path_charts  
                |> Chart.WithStyling(Margin=(2.0, 12.0, 2.0, 2.0))  
                |> Chart.WithTitle(Text=title, FontName = "Arial", FontSize = 14.0,   
                                    FontStyle = FontStyle.Bold, InsideArea = false)   
                |> Chart.WithXAxis(Title="横坐标", Max=T, Min=0.0,   
                                    TitleAlignment = StringAlignment.Center,   
                                    TitleFontName = "Arial",   
                                    TitleFontSize = 14.0, TitleFontStyle = FontStyle.Bold)  
                |> Chart.WithYAxis(Title="纵坐标",   
                                    Max=(Math.Round(mx) + 1.0), Min=(Math.Round(mn) - 1.0),   
                                    TitleAlignment = StringAlignment.Center,   
                                    TitleFontName = "Arial",   
                                    TitleFontSize = 14.0, TitleFontStyle = FontStyle.Bold)  
chart.ShowChart()  


 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值