2012-01-05 16 views
0

我有一個Python模塊,要求我生成約24個不同的數字。爲了清除代碼,我將六個左右的子圖集合的單獨繪圖功能放入單獨的子模塊中,並用繪圖所需的數組調用它們。空的.png輸出爲子模塊繪製matplotlib

每一個單獨的結構線沿線的:我導入所有的繪製子模塊的頂部模塊的頭

import os, numpy, scipy 

import matplotlib.pyplot as plt 

def plot(array1, array2): 

    Initial Plotting Setup 

    plt.clf() 

    Plotting and saving commands 

,當我做到這一點獲取生成唯一的情節由最後一個繪圖子模塊導入的一個。其餘的都是空白的.png文件。我重新安排了進口訂單,這就是它的工作原理。當我將它放在頂層模塊的主體中​​時,在需要繪製時導入,發生了類似的情況。

是否有人知道爲什麼會發生這種情況,以及我如何在保留子模塊中的所有繪圖工具的同時修復它?

+0

你可能需要提供更多的信息得到一個明確的答案。你正在創造個人數字?或者你是否通過pyplot使用過程接口:plt.plot(),plt.savefig()等? – Yann 2012-01-05 17:25:49

+0

是的,我通過pyplot使用程序接口。下面是一個例子: 'DEF varPlot(通過計數,corrMat,plotsPlace): plt.clf() 繪圖函數該處 pltname = 「/variances.png」 FNAME = plotsPlace + pltname fig.savefig( fname)' – webb 2012-01-05 17:35:17

回答

0

我不知道你如何組織你的代碼。這工作:

m1.py

import matplotlib.pyplot as plt 

def plot(): 
    plt.clf() 
    plt.plot([10,2,30,4]) 
    plt.title("m1") 
    plt.savefig('m1') 

m2.py

import matplotlib.pyplot as plt 

def plot(): 
    plt.clf() 
    plt.plot([1,2,3,4]) 
    plt.title("m2") 
    plt.savefig('m2') 

par.py

import m1 
import m2 

m1.plot() 
m2.plot() 

文件夾結構:

folder\ 
....__init__ 
....m1.py 
....m2.py 
....par.py 

運行:

>> from folder import par 

m1.png

enter image description here

m2.png

enter image description here

+0

這正是我所擁有的結構,並且它返回了空格.png文件,用於在m1中完成繪圖。 – webb 2012-01-05 17:50:59

+0

它**完全相同嗎?如果你完全重現我的結構和文件,你還能獲得一個空白的數字嗎? – joaquin 2012-01-05 18:36:31

+0

我想通了。我使用了一些定義,如fig = plt.figure(),我從matplotlib網站下載了它,並且產生了一些意想不到的後果。 這裏真正的教訓是不使用fig = plt.figure()... – webb 2012-01-05 21:22:58