gpt4 book ai didi

matplotlib - 来自脚本的 Julia pyplot(非交互式)

转载 作者:行者123 更新时间:2023-12-04 14:59:02 25 4
gpt4 key购买 nike

我刚刚在 Julia 中安装了 PyPlot。当我从 julia 的交互式环境中运行它时,它运行良好。但是当我从 bash 运行一个 .jl 脚本时,绘图图形不会显示。

我熟悉 matplotlib (pylab) 其中 show() 命令用于查看数字。我可能不明白这里的 PyPlot 自述文件 https://github.com/stevengj/PyPlot.jl

You can get the current figure as a Figure object (a wrapper around matplotlib.pyplot.Figure) by calling gcf(). The Figure type supports Julia's multimedia I/O API, so you can use display(fig) to show a fig::PyFigure



如果我运行这个脚本:
using PyPlot
x = linspace(0,2*pi,1000); y = sin(3*x + 4*cos(2*x));
plot(x, y, color="red", linewidth=2.0, linestyle="--")
title("A sinusoidally modulated sinusoid")
fig1 = gcf()
display(fig1)

我在屏幕上没有图形,只有带有图形对象地址的文本输出
$ julia pyplottest.jl
Loading help data...
Figure(PyObject <matplotlib.figure.Figure object at 0x761dd10>)

我也不确定为什么需要这么长时间以及“正在加载帮助数据...”是什么意思

如果我使用 include("pyplottest.jl") 从 Julia 环境内部运行相同的脚本,情节确实显示良好

最佳答案

display仅当您正在运行支持图形 I/O 的环境时才有效,例如 IJulia,但即使在那里您也不需要直接调用它(当 IJulia 单元完成执行时,绘图会自动显示)。

你可以做show()就像在 Python 中一样。然而,PyPlot 以交互模式加载 Matplotlib,GUI 事件循环在后台运行,所以 show()是非阻塞的,并没有真正做任何事情。一种选择是做

using PyPlot
x = linspace(0,2*pi,1000); y = sin(3*x + 4*cos(2*x));
plot(x, y, color="red", linewidth=2.0, linestyle="--")
title("A sinusoidally modulated sinusoid")
print("Hit <enter> to continue")
readline()

暂停。

如果您只是想做非交互式 Matplotlib,则根本不需要 PyPlot 包。你可以这样做:
using PyCall
@pyimport matplotlib.pyplot as plt
x = linspace(0,2*pi,1000); y = sin(3*x + 4*cos(2*x));
plt.plot(x, y, color="red", linewidth=2.0, linestyle="--")
plt.title("A sinusoidally modulated sinusoid")
plt.show()

show()命令将一直阻塞,直到用户关闭绘图窗口。

(可能我应该 add an option to PyPlot 以非交互模式加载它。)

关于matplotlib - 来自脚本的 Julia pyplot(非交互式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22041461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com