FsReveal和XPlot.Plotly:在FsReveal演示文稿中嵌入一个情节

时间:2016-02-16 22:06:02

标签: f# markdown

我正在尝试在使用XPlot.PlotlyF#创建的演示文稿中包含使用FsReveal生成的图表。我只需使用.fsx文件启动并运行演示文稿:

(**
- title : Testing FsReveal 
- description : Testing FsReveal
- author : You
- theme : moon
- transition : none
***
### Syntax Highlighting
#### F# (with tooltips)
*)

#r "../packages/XPlot.Plotly/lib/net45/XPlot.Plotly.dll"
open XPlot.Plotly
let scatter = 
    Scatter(
        x = [0; 1; 2; 3; 4; 5], 
        y = [1.5; 1.; 1.3; 0.7; 0.8; 0.9],
        mode = "markers"
    )
let layout = 
    Layout(
        showlegend = false, 
        title = "Here's a test!"
    )
let data = seq [scatter]
let aPlot = Plotly.Plot(data, layout)
(**

***
## Literate Slides with FsReveal

<br />
FsReveal may embed the chart here:
*)  
aPlot.Show()

但最终aPlot.Show()语句只会在浏览器的新窗口中打开地图aPlot

如何在幻灯片中嵌入绘图?

我现在唯一可以看到的工作是使用aPlot.Show()在浏览器窗口中查看图片,将图表保存为.png,然后参考.fsx中的图表文件,但这似乎特别麻烦。是否有更简单的方法在FsReveal演示中包含Plotly图?

我不需要Plotly情节的“互动性”,但我喜欢能够控制情节的样子,因此我在F#中使用了Plotly。

感谢。

1 个答案:

答案 0 :(得分:1)

我确实有一个在我的文字编程谈话中在FsReveal中嵌入图表的例子。这有点老了,我认为FsReveal可能会有所改变,但关键技巧应该是相同的。

要嵌入图表,您需要添加a few special commented commands

(**
## Slide with code sample
*)
(*** define-output:chart ***)
Chart.Line [ for x in 0.0 .. 10.0 -> x, sin x ]
(**
-------------------------------------------------------------------------------
## Slide with output
*)
(*** include-it:chart ***)

有一些关于embedding works on F# Formatting web

的文档

它需要的另一部分是在build.fsx中设置FSI评估器。你需要line that calls wrapFsiEvaluator here(谈话中有一些与ToHtml方法相关的东西,这是其他东西而你不需要它。)