用Xplot绘制deedle数据帧的数据

时间:2016-10-10 15:49:08

标签: f# plotly deedle

我有一个Deedle数据框,其中DateTime值为键,两列有数据。现在我想用Plotly的Scatter图表绘制第1列的数据。

我正在使用FSLab并且包含XPlot.Plotly 1.3.1。

但我不能使用Plotly:

open XPlot.Plotly.Graph
open XPlot.Plotly
open XPlot.Plotly.HTML

let dataFrame = ...

Scatter(
  x = dataFrame.ColumnKeys,
  y = dataFrame.GetColumn("col1")
)
|> Chart.Plot
|> Chart.Show

我收到此错误:“字段,构造函数或成员'Plot'未定义。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

不确定XPlot的最新版本是什么,但我在nuget中得到1.4.2。所以,为了简单起见,我这次避免了所有的FSLab魔法:

//#load @"..\..\FSLAB\packages\FsLab\FsLab.fsx"
#r @"..\packages\XPlot.Plotly.1.4.2\lib\net45\XPlot.Plotly.dll"
#r @"..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll"
open XPlot.Plotly
open XPlot.Plotly.Graph

let layout = Layout(title = "Basic Bar Chart")

["giraffes", 20; "orangutans", 14; "monkeys", 23]
|> Chart.Bar
|> Chart.WithLayout layout
|> Chart.WithHeight 500
|> Chart.WithWidth 700
|> Chart.Show


let lineTrace1 =
    Scatter(
        x = [1; 2; 3; 4],
        y = [10; 15; 13; 17],
        mode = "markers"
    )

lineTrace1 |> Chart.Plot   |> Chart.Show

现在,这将在浏览器中绘制图表。我相信你可以将它绑定到WPF或winforms。

修改

由于这对您有用,但您仍需要FSLab,因此最简单的方法是替换...\FSLAB\packages\XPlot.Plotly\lib\net45中的XPlot.Plotly.dll和xml文件。

然后你可以调用XPlot.Plotly而无需直接引用dll。

#load @"..\..\FSLAB\packages\FsLab\FsLab.fsx"
open XPlot.Plotly
open XPlot.Plotly.Graph
open XPlot.Plotly.Html

let layout = Layout(title = "Basic Bar Chart")
["giraffes", 20; "orangutans", 14; "monkeys", 23]
|> Chart.Bar
|> Chart.WithLayout layout
|> Chart.WithHeight 500
|> Chart.WithWidth 700
|> Chart.Show