在 FSLAB 中使用 FSharp.Charting 绘制 Deedle 系列并编译 exe

Plotting Deedle series with FSharp.Charting in FSLAB and compiled exe

当使用 FSharp.Charting 绘制 Deedle DataFrame 或 Series 时,FSLAB 可以方便地重载各种 Chart 函数以直接与 Series 一起使用。例如,我可以做 Series(x,y) |> Chart.Column。但是在编译 Deedle 时直接引用 FSharp.Charting 并且 Series 需要转换为 Series.observations Series(x,y) |> Series.observations |> Chart.Column

有没有办法避免Series.observations?或者我是否需要为所有不同的图表功能定义一个扩展方法?这是 Plotting Deedle frame

中的建议

这是我使用的代码,它在 FSI 或 .exe 中都有效:

#if INTERACTIVE
#load @"..\..\FSLAB\packages\FsLab\FsLab.fsx"
#r @"Deedle"
#r @"Fsharp.Charting"
#endif

open System
open Deedle
open FSharp.Charting
open FSharp.Charting.ChartTypes
open System.Drawing
open System.Windows.Forms

   [<STAThread>]
   [<EntryPoint>]
   let main argv = 
        let x = ['a'..'j'] |> List.map string     
        let y = [1..10]
        let chart1 = Series(x,y) |> Series.observations |>  Chart.Column
        let myChartControl = new ChartControl(chart1, Dock=DockStyle.Fill)
        let form = new Form(Visible = true, TopMost = true, Width = 700, Height = 500)
        form.Controls.Add(myChartControl)
        do Application.Run(form) |> ignore

当您从脚本文件中引用 FsLab 时,FsLab.fsx 文件中定义了方便的重载。你可以 see them in the source code here.

我们希望将它们移动到您可以参考的 dll,但目前,最简单的选择是将助手复制到您项目中的一个单独文件中,并且只有一个本地副本。