python:在一个subplot2grid-image

时间:2016-04-29 14:55:09

标签: python matplotlib

设f是一个依赖于自变量x和一个(或多个)参数b的函数。 我的目标是将多个b值绘制到同一图像中。我希望b是一个全局值(这样我就可以快速改变它)。 考虑代码

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每个评估被绘制到同一个图中?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我现在在LookAtf函数中使用for循环,就像你推荐的tfv一样。这是我的结果My result

然而传说仍然没有按我的意愿行事。 但无论如何,谢谢你的提示!

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