2012-01-05 30 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