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