我已经在Jupyter笔记本中制作了一些julia代码的原型,但是它已经超出了笔记本的格式,我想将其放入脚本中以正确组织它。但是,我无法弄清楚如何使Plots在脚本中工作,也找不到有关它的任何文档。
这是一个最小的无效示例:
using Plots
gr()
display(plot([1,3,2]))
println("here")
此代码需要20到30秒的时间来导入绘图,然后打开一个窗口,但立即将其再次关闭,在“此处”打印并退出。导入过程发生时,我无法使用ctrl-C。
所以,我有三个问题:
如何防止绘图窗口在打开后立即关闭?我想要的是脚本阻止或(理想情况下)进入事件循环,直到窗口关闭,然后在那之后终止。
是否可以以某种方式减少极长的导入时间?
在Jupyter环境之外是否存在任何有关使用图的文档?
如果有所作为,那么我在Mac上使用的是julia 1.1.1。
答案 0 :(得分:1)
实现第一个项目符号所需的工作流的最自然的方法是使用Juno或VS Code。假设在工作目录中,文件script.jl
中包含以下代码:
using Plots
gr()
display(plot([1,3,2]))
hello = "world"
println("here")
现在启动Juno或VS Code并启动集成的Julia REPL。在Julia REPL中,您可以使用include
来获取脚本:
julia> include("script.jl")
Plot{Plots.GRBackend() n=1}
here
现在您的脚本已完全运行,并且可以在绘图窗格中查看该绘图(对于Juno和VS Code都是如此)。现在,您可以继续在REPL中include
个其他文件或以交互方式运行其他代码。请注意,script.jl
中定义的变量可以使用:
julia> hello
"world"
编辑:
如果使用-i
选项运行脚本(用于交互式),则脚本运行完成后,绘图GUI将保持打开状态,并且REPL将启动:
$ julia -i script.jl
Julia可执行文件的各种选项可以是found here,也可以通过在终端中键入$ julia --help
来找到。
答案 1 :(得分:1)
可以通过提前编译Plots.jl软件包并使用PackageCompiler.jl软件包将其烘焙到julia可执行文件中来消除导入时间。这是包网站的链接
https://julialang.github.io/PackageCompiler.jl/dev/
请参阅有关如何执行此操作的教程,第一个教程是有关编译语法突出显示包的。那将替换您的默认“ sysimage”。第二个教程是关于在编译Plots.jl的过程中创建一个可加载的“ sysimage”,并以该“ sysimage”开始Julia,这样就不必再次编译Plots.jl。
但是我无法获得第二个“可加载的系统映像”,因此即使对于Plots.jl,我也使用了第一种教程方式。
更改之后,使用Plots和plot()基本上是即时的。