用 Xplot 绘制 deedle 数据框的数据

Posted

技术标签:

【中文标题】用 Xplot 绘制 deedle 数据框的数据【英文标题】:Plotting data of deedle data frame with Xplot plotly 【发布时间】:2017-02-19 02:19:41 【问题描述】:

我有一个 Deedle 数据框,其中 DateTime 值作为键,两列数据。现在我想用 Plotly 的散点图绘制第 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'。

我错过了什么吗?

【问题讨论】:

你试过直接引用 XPlot 吗? 嗯,这有点激烈,但您可以将 Fslab 的 xplotly 目录中的 dll 替换为 1.4.2 版本。然后它工作。我没有编辑其他脚本。 【参考方案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

【讨论】:

我也试过了,它正在使用最新版本的 XPlot 库。但是如果我不使用 Fslab 脚本,我会得到很多其他错误。例如,我必须自己引用很多系统包(如 System.Runtime)。而且我不知道为什么,因为在 Fslab 脚本中没有对这些 dll 的任何引用。 @cpa 这些错误可能来自您可能从 FSLab 使用的其他东西,例如 Deedle。也许这意味着 Xplotly 和 FSLab 之间存在一些不兼容。你需要使用 Plotly 吗?当我检查时(来自 FSLAB 脚本),Xplot 中的 Googlecharts 工作正常。

以上是关于用 Xplot 绘制 deedle 数据框的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何绘制熊猫数据框的多列

如何按列绘制数据框的多个字典?蟒蛇熊猫

如何绘制来自具有相同列名的两个数据框的数据

我们如何在热图中绘制来自多索引数据框的数据?

如何使用点绘制熊猫数据框的两列

R绘图pheatmap热图绘制——高阶篇