【发布时间】:2019-05-22 02:18:16
【问题描述】:
我一直在 Jupyter 笔记本中对一些 julia 代码进行原型设计,但它已超出笔记本格式,我想将其放入脚本中以便正确组织它。但是,我不知道如何让 Plots 在脚本中工作,也找不到任何关于它的文档。
这是一个最小的不工作示例:
using Plots
gr()
display(plot([1,3,2]))
println("here")
此代码需要 20-30 秒来导入 Plots,然后打开一个窗口但又立即将其关闭,打印“here”,然后退出。导入过程中我无法使用 ctrl-C。
所以,我有三个问题:
如何防止绘图窗口一打开就关闭?我想要的是让脚本阻止或(理想情况下)进入事件循环,直到窗口关闭,然后终止。
能否以某种方式减少极长的导入时间?
是否有任何文档可用于在 Jupyter 环境之外使用 Plot?
如果有什么不同,我在 Mac 上使用 julia 1.1.1。
【问题讨论】:
-
我猜你在一个文件中有上面的代码,比如
script.jl,并且正在调用$ julia script.jl。似乎绘图 GUI 仅在 julia 进程运行时保持打开状态。一旦进程到达脚本的末尾,进程就会终止并且您会丢失 GUI。我认为你必须要么使用savefig将你的绘图保存到一个文件中,要么通过 REPL、Juno 或 VS Code 以交互方式工作。 -
Plots.jl 的加载时间长通常令人遗憾。 :)
-
关于你的第三点,你不应该做任何特别的事情来使用 Plots.jl 从 REPL、Juno 或 VS 代码交互地进行绘图。
-
@clbieganek 对于第一点,我进行了编辑以更清楚地了解我想要的内容。我希望复制我当前的 Python 工作流程,我的脚本在其中进行一些计算,然后弹出一个显示结果的窗口,直到我关闭它。如果这个工作流程不可行,那么遗憾的是,Julia 目前对我来说不是正确的解决方案。 (我不想在 notebook/REPL 中运行所有内容,因为这可能会导致可重复性的细微问题。)
-
可重复性是一个非常合理的问题。为了解决这个问题,您可以考虑将代码编写为 Julia 包并包含单元测试。 Julian 风格是编写许多非常短的函数(“单一职责原则”)。而且函数越小,为这些函数添加单元测试就越容易。