2016-10-10 73 views
1

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

我正在使用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 

我得到这个错误:“这个领域,构造或成员‘情节’没有定义

难道我失去了一些东西?

+0

您是否尝试过直接引用XPLot? – s952163

+1

好吧,它有点激烈,但你可以用1.4.2版本替换Fslab的xplotly目录中的dll。然后它工作。我没有编辑其他脚本。 – s952163

回答

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,讨巧的就是更换XPlot.Plotly.dll和XML文件中...\FSLAB\packages\XPlot.Plotly\lib\net45

然后你可以调用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 
+1

我也试过了,它使用最新版本的XPlot库。但是如果我不使用Fslab脚本,我会遇到很多其他错误。例如,我必须为我自己引用很多系统包(如System.Runtime)。我不知道为什么,因为在Fslab脚本中没有提及这些dll。 – CPA

+0

@cpa这些错误可能来自您可能从FSLab使用的其他东西,如Deedle。也许这意味着Xplotly和FSLab之间有一些不兼容。你需要使用Plotly吗?当我检查(从FSLAB脚本)时,Xplot中的Googlecharts工作。 – s952163