2016-04-29 56 views
-1

设f是依赖于独立变量x和一个(或多个)参数b的函数。 我的目标是将f的几个b值绘制到同一图像中。我希望b是一个全球价值(以便我可以快速改变它)。 考虑代码python:在一个子图中多次绘图2grid-image

import numpy as np 
import pylab as pl 

b=0.5 
def f(x,b): 
    return np.sin(x*b)*b 

X = np.linspace(0,10,1000) 
F = f(X,b) 
pl.figure(figsize=(12, 16), num="My sine") 
pl.plot(X, F, label='b = %f' %b) 
pl.legend(loc="best") 

此代码可多次评估,只是对于b的另一值。然后所有的曲线都绘制成相同的图形。

现在的问题: 如果在上面的代码,我把

pl.subplot2grid((4, 1), (0, 0), rowspan=3) 

pl.plotpl.legend之间,代码的每一个新的评价被拉入一个新的空白身影。

那么,我怎么能意识到,使用pl.subplot2grid每个评估都被绘制到同一个数字?

回答

1

也许您正在寻找这样的事情?:

import numpy as np 
import pylab as pl 

def f(x,b): 
    return np.sin(x*b)*b 

def draw(b): 
    X = np.linspace(0,10,1000) 
    F = f(X,b) 
    ax1.plot(X, F, label='b = %f' %b) 


# Main program 
fig = pl.figure(figsize=(12, 16), num="My sine") 
ax1 = pl.subplot2grid((4,3), (0,0), colspan=2) 

for b in [0.4, 0.5, 0.6]: 
    draw(b) 

pl.legend(loc="best") 
pl.show() 

enter image description here

+0

关于您的建议的好处是,它确实将所有曲线绘制到同一个图中。但是,如果可能的话,我想保持全球价值。 – Chris

+0

还有坏事? – tfv

+0

我想保持一个全局的,这是没有在循环中的其他地方指定。 – Chris

0

我做到了,现在用LookAtf函数内部的循环,因为你,TFV,推荐。这是我的结果My result

然而,传说仍然没有按照我的意愿去做。 但无论如何感谢提示!

@ Arthur Havlicek: 其实我的代码已经分为3个部分。如果评估了3.部件,它将自动导入2.部件,该部件再次自动导入1.部件。 实际上,就我而言,在函数定义之后不可能定义常量。原因在于函数的定义方式取决于常量的选择。所以,我首先必须定义常量,让python知道它应该如何定义函数。