2014-02-26 62 views
5

我剛剛在Julia安裝了PyPlot。當我從julia的交互式環境中運行時,它工作正常。但是,當我使用bash運行.jl腳本時,不會顯示劇情圖形。Julia pyplot腳本(不是交互式)

我與matplotlib(pylab)家庭在哪裏顯示()命令是用來查看數字。我可能不PyPlot已瞭解的自述這裏https://github.com/stevengj/PyPlot.jl

你可以通過調用GCF目前的數字爲圖對象(約 matplotlib.pyplot.Figure包裝)()。該圖類型支持 Julia的多媒體I/O API,以便您可以使用顯示器(圖)展現出 圖:: 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>) 

我也不知道爲什麼要花這麼長的時間,什麼「加載幫助數據...「確實意味着

,如果我使用包括朱莉婭環境現狀的內部運行相同的腳本(」 pyplottest.jl「)情節確實顯示精細

回答

4

display僅當您運行的環境,支持工作圖形I/O,就像IJulia一樣,但即使在那裏,您也不需要直接調用它(當IJulia單元完成執行時,繪圖會自動顯示)。

就像在Python中一樣,你可以做show()。然而,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將其加載到非交互模式。)

+0

作爲'朱莉婭v0.6.0'和'PyPlot V 「2.3.2」','調用顯示()'從腳本很好用。它等待用戶關閉該數字,然後優雅地退出Juila。 – NHDaly