pyplot
matplotlib.pyplot是使matplotlib像MATLAB一样工作的函数的集合。每个pyplot函数都会对figure进行一些更改:例如,创建figure,在figure中创建绘图区域,在绘图区域中绘制一些线条,用标签装饰绘图等。
plot
plot的使用方式
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.show()
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [2, 2, 3, 4])
plt.show()
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [2, 2, 3, 4], 'r+')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0., 5., 0.2)
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
相当于:
import matplotlib.pyplot as plt
import numpy as np
plt.plot(t, t, 'r--')
plt.plot(t, t**2, 'bs')
plt.plot(t, t**3, 'g^')
plt.show()
plot()
之后需要调用show()
才会展示figure
scatter
import numpy as np
import matplotlib.pyplot as plt
data = {'a': np.arange(50), # 返回start(默认0)到stop,间隔为step(默认1)的一维数组
'c': np.random.randint(0, 50, 50), # 参数low, high=None, size=None;返回范围在[low, hight),长度为size的数组
'd': np.random.randn(50) # 从“标准正态”分布返回一个(或多个)样本。不传参,返回一个数;传参,每增加一个参数为一个维度;传1返回长度为1的数组
}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100
plt.scatter('a', 'b', s='d', c='c', data=data) # s:marker size; c:color
plt.show()
涉及的numpy:
xlabel,ylabel
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.xlabel('x value')
plt.ylabel('y value')
plt.show()
xlim,ylim
xlim/ylim:获取或设置x/y轴的限制。
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.xlabel('x value')
plt.ylabel('y value')
plt.ylim(0, 5) # y轴显示范围限制
plt.xlim(0, 4) # x轴显示范围限制
plt.show()
subplot
import matplotlib.pyplot as plt
plt.figure()
plt.subplot(211)
plt.plot([1, 2, 3])
plt.title('subplot 211')
plt.subplot(212)
plt.plot([4, 5, 6])
plt.title('subplot 212')
plt.ylim(0, 6.5)
plt.show()
因为布局太紧凑,如果每个子图都命名的话,就会重叠。
import matplotlib.pyplot as plt
plt.figure()
plt.subplot(211)
plt.plot([1, 2, 3])
plt.title('subplot 211')
plt.subplot(212)
plt.plot([4, 5, 6])
plt.title('subplot 212')
plt.ylim(0, 6.5)
plt.tight_layout(pad=0.4, w_pad=0.6, h_pad=1.2)
plt.show()
figure
import matplotlib.pyplot as plt
plt.figure(1)
plt.plot([1, 2, 3, 4])
plt.title('figure 1')
plt.figure(2)
plt.plot([2, 2, 3, 4])
plt.title('figure 2')
plt.show()
Axes,grid
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)',
title='Create a simple plot')
ax.grid(axis='both') # axis : {'both', 'x', 'y'}
plt.show()