python matplotlib画图

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
import matplotlib.pyplot as plt

h0 = [0.4,.6,.8] # h0取值
lambda0 = [0.03,0.05,0.07] # λ取值
plt.figure(figsize=(6,4)) # 设置图片大小
x = np.linspace(0, 50, 50) # 在[0,50)中取50个点

for i in lambda0:
for h in h0:
plt.plot(x, 11+(20*np.exp(-i*x)-h*x)/2,label='lambda='+str(i)+' h='+str(h))
# plt.plot(x,y,图例内容)
plt.legend() # 显示图例

在使用matplotlib的过程中,发现不能像matlab一样同时开几个窗口进行比较,于是查询得知了交互模式,但是放在脚本里运行的适合却总是一闪而过,图像并不停留.
python可视化库matplotlib有两种显示模式:

阻塞(block)模式

交互(interactive)模式

在Python Consol命令行中,默认是交互模式。而在python脚本中,matplotlib默认是阻塞模式。

其中的区别是:
在交互模式下:

plt.plot(x)或plt.imshow(x)是直接出图像,不需要plt.show()
如果在脚本中使用ion()命令开启了交互模式,没有使用ioff()关闭的话,则图像会一闪而过,并不会常留。要想防止这种情况,需要在plt.show()之前加上ioff()命令。

在阻塞模式下:

打开一个窗口以后必须关掉才能打开下一个新的窗口。这种情况下,默认是不能像Matlab一样同时开很多窗口进行对比的。
plt.plot(x)或plt.imshow(x)是直接出图像,需要plt.show()后才能显示图像

1
2
3
4
5
6
7
8
9
10
import matplotlib.pyplot as plt
plt.ion() # 打开交互模式
# 同时打开两个窗口显示图片
plt.figure()
plt.imshow(i1)
plt.figure()
plt.imshow(i2)
# 显示前关掉交互模式
plt.ioff()
plt.show()