在 Pluto 中以交互方式使用 Gadfly

问题描述

我在 Pluto 中使用 Gadfly,我想弄清楚是否有可能在 Pluto 笔记本中拥有绘图的交互式版本。如果我只使用 REPL,Gadfly 会生成非常好的交互式绘图,并在我的网络浏览器中打开:

using Gadfly
plot([sin,cos],4)

但是,如果我在 Pluto 中使用 Gadfly,则笔记本中包含的绘图不是交互式的,它们是静态的。这是 Pluto 笔记本的简单示例:

### A Pluto.jl notebook ###
# v0.12.20

using Markdown
using InteractiveUtils

# ╔═╡ 7bb74118-73d1-11eb-2bd5-c1ef89972288
using Gadfly

# ╔═╡ 9080ac2e-73d1-11eb-18d6-5f85903a7259
plot([sin,4)

# ╔═╡ Cell order:
# ╠═7bb74118-73d1-11eb-2bd5-c1ef89972288
# ╠═9080ac2e-73d1-11eb-18d6-5f85903a7259

如何在 Pluto 中获得交互式版本的 Gadfly 图?

非常感谢任何帮助!

解决方法

遵循https://github.com/fonsp/Pluto.jl/issues/546#issuecomment-705556778中的建议

您可以定义:

struct HTMLDocument
    embedded
end

function Base.show(io::IO,mime::MIME"text/html",doc::HTMLDocument)
    println(io,"<html>")
    show(io,mime,doc.embedded)
    println(io,"</html>")
end

然后做

plot([sin,cos],4) |> HTMLDocument

获取 Pluto 中的交互式绘图。

最好,