XPlot试图可视化数据

时间:2018-10-28 18:48:26

标签: plot f# jupyter-notebook

我很难尝试使用f#可视化某些数据。我正在尝试使用在本地主机上运行的jupyter notebooks在Linux环境中实现此目标。我正在关注this article。 一切似乎都很好,我设法加载了所有需要的脚本文件,例如MathNet.NumericsXPlot。我没有任何错误,我的终端也很好,内核到位。我想知道为什么在运行代码后为什么没有图形表示?

It only says that I get back Xplot.Plotly.PlotlyChart

它只说我回来了Xplot.Plotly.PlotlyChart,那么实际图形呢?我不确定这是否足以帮助我,如果不能,请告诉我并将填写其他信息。我也尝试了其他浏览器,但没有帮助。

实际代码:

#load @"<project-root>/.paket/load/net45/MathNet.Numerics.fsx"
#load @"<project-root>/.paket/load/net45/MathNet.Numerics.FSharp.fsx"
#load @"<project-root>/.paket/load/net45/XPlot.Plotly.fsx"


open System
open System.Linq
open MathNet.Numerics.Distributions
open MathNet.Numerics.LinearAlgebra
open XPlot.Plotly

let n = 40
let nbsim = 1000
let lambda = 0.2
let randomSeed = 1111

let exponential = Exponential.Samples(new Random(randomSeed), lambda) |> Seq.take (n* nbsim) |> List.ofSeq

let m = Matrix<float>.Build.DenseOfRowMajor(nbsim, n, exponential)

let means = m.RowSums() / (float n)
means.Average()

let historyTrace = 
  Histogram(
    x = means,
    xbins = 
      Xbins(
        start = 2.8,
        ``end`` = 7.75,
        size = 0.08
      ),
    marker =
      Marker(
        color = "yellow",
        line =
          Line(
            color = "grey",
            width = 1
          )
      ),
    opacity = 0.75,
    name = "Exponental distribution"      
  ) :> Trace

let meanTrace = 
  Scatter(
    x = [5; 5],
    y = [0; 60],
    name = "Theorical mean"
  ) :> Trace

// Or plain historyTrace below
[historyTrace; meanTrace]
|> Chart.Plot
|> Chart.WithXTitle("Means")
|> Chart.WithYTitle("Frequency")
|> Chart.WithTitle("Distribution of 1000 means of exponential distribution")

请注意,#load语句包含<project-root>占位符。我正在使用Paket为#load生成脚本。

1 个答案:

答案 0 :(得分:0)

这在F#Azure Notebook中对我有用。

在调用图表之前,请确保将其包含在单元格中

#load "XPlot.Plotly.Paket.fsx"
#load "XPlot.Plotly.fsx"
open XPlot.Plotly

这是FSharp for Azure Notebook的报价:

  

请注意,我们必须#load两个帮助程序脚本才能加载   我们需要的装配体,并使Display能够显示我们的图表。首先   下载并安装所需的Paket软件包,第二个   设置显示支持。

您的关键所在是:#load "XPlot.Plotly.fsx" 那就是让您在笔记本中显示图表的方式。

这是我在Azure笔记本中的代码:

// cell 1
#load "XPlot.Plotly.Paket.fsx"
#load "XPlot.Plotly.fsx"

// cell 2
Paket.Package [ "MathNet.Numerics"
                "MathNet.Numerics.FSharp"  ]
#load "Paket.Generated.Refs.fsx"  

// cell 3
open System
open System.Linq
open MathNet.Numerics.Distributions
open MathNet.Numerics.LinearAlgebra
open XPlot.Plotly

let n = 40
let nbsim = 1000
let lambda = 0.2
let randomSeed = 1111

let exponential = Exponential.Samples(new Random(randomSeed), lambda) |> Seq.take (n* nbsim) |> List.ofSeq

let m = Matrix<float>.Build.DenseOfRowMajor(nbsim, n, exponential)
...