使用julia -i运行脚本时Gadfly的plot命令无法正常显示如何解决?
问题原因
Gadfly的plot函数本身仅返回Plot类型对象,只有当该对象被REPL自动捕获返回值、或者被显式调用display/show方法时,才会触发渲染输出图像。
你手动在REPL粘贴代码时,每一行输入的返回值都会被REPL自动调用显示逻辑,所以可以正常出图;而通过
julia -i scriptname.jl执行的脚本内容里的所有表达式返回值都不会被自动处理,仅会输出Plot(...)的结构化打印结果。
解决方案
- 方案1:脚本内对plot调用显式加
display包裹(最通用,无需其他配置)
把脚本里的plot语句修改为:
执行脚本时就会自动触发渲染弹窗显示图像。display(plot(massdf, x=:date, y=:mass, group=:day, color=:day, Geom.line)) - 方案2:需要直接保存图像到文件时,用
draw方法显式指定输出格式
示例(输出为SVG文件):
支持的格式包括using Gadfly draw(SVG("mass_trend.svg", 14cm, 10cm), plot(massdf, x=:date, y=:mass, group=:day, color=:day, Geom.line))SVG/PNG/PDF/EPS等,按需选择即可。 - 方案3:如果执行完脚本后已进入REPL交互状态,直接输入
ans回车即可渲染上一条执行的plot结果,也可以把plot结果赋值给变量后手动输入变量名触发显示。
内容的提问来源于stack exchange,提问作者Yves Dorfsman
相关产品推荐
相关产品推荐

