Python初学小知识(十二):Matplotlib
十六、Matplotlib
Matplotlib是Python的绘图库,具备强大的绘图功能,且能在很多平台上使用。
1. 线型图
import matplotlib.pyplot as plt #习惯于将“import matplotlib”写成“import matplotlib.pyplot as plt”
import numpy as np
%matplotlib inline
#直接显示 Matplotlib 绘制的图像
np.random.seed(42)
x = np.random.randn(30) #生成30个随机参数(均值为0,方差为1的正态分布)
plt.plot(x, 'r--o')
[<matplotlib.lines.Line2D at 0x23e5668e550>]
2. 颜色、标记形状、线型
用于设置线型图中线条颜色的常用参数如下:
(1)“b”:指定绘制的线条颜色为蓝色。
(2)“g”:指定绘制的线条颜色为绿色。
(3)“r”:指定绘制的线条颜色为红色。
(4)“c”:指定绘制的线条颜色为蓝绿色。
(5)“m”:指定绘制的线条颜色为洋红色。
(6)“y”:指定绘制的线条颜色为黄色。
(7)“k”:指定绘制的线条颜色为黑色。
(8)“w”:指定绘制的线条颜色为白色。
用于设置线型图中标记参数点形状的常用参数如下:
(1)“o”:指定标记实际点使用的形状为圆形。
(2)“”:指定标记实际点使用“”符号。
(3)“+”:指定标记实际点使用“+”符号。
(4)“x”:指定标记实际点使用“x”符号。
用于设置线型图中连接参数点线条形状的常用参数如下:
(1)“-”:指定线条形状为实线。
(2)“–”:指定线条形状为虚线。
(3)“-.”:指定线条形状为点实线。
(4)“:”:指定线条形状为点线。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
a = np.random.randn(30)
b = np.random.randn(30)
c = np.random.randn(30)
d = np.random.randn(30)
plt.plot(a, 'r--o', b, 'b-*', c, 'g-.+', d, 'm:x') #此时没有使用随机种子,结果有差异性
[<matplotlib.lines.Line2D at 0x23e5677b970>,
<matplotlib.lines.Line2D at 0x23e5677b7f0>,
<matplotlib.lines.Line2D at 0x23e5677b9a0>,
<matplotlib.lines.Line2D at 0x23e5677bac0>]
3. 标签、图例
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
np.random.seed(42)
x = np.random.randn(30)
y = np.random.randn(30)
plt.title('Example')
plt.xlabel('X')
plt.ylabel('Y')
X, = plt.plot(x, 'r--o')
Y, = plt.plot(y, 'b-x')
plt.legend([X, Y], ['X_value', 'Y_value'])
<matplotlib.legend.Legend at 0x23e56c3f0a0>
4. 子图
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
a = np.random.randn(30)
b = np.random.randn(30)
c = np.random.randn(30)
d = np.random.randn(30)
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
A, = ax1.plot(a, 'r--o')
ax1.legend([A], ["A"])
B, = ax2.plot(b, 'b-*')
ax2.legend([B], ["B"])
C, = ax3.plot(c, 'g-.+')
ax3.legend([C], ["C"])
D, = ax4.plot(d, 'm:x')
ax4.legend([D], ["D"])
<matplotlib.legend.Legend at 0x23e56da4d60>
5. 散点图
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
np.random.seed(42)
x = np.random.randn(30)
y = np.random.randn(30)
plt.scatter(x, y, c='g', marker='o', label='(X, Y)')
plt.title("Example")
plt.xlabel('X_value')
plt.ylabel('Y_value')
plt.legend(loc=1)
plt.show()
上面的代码中:
- c='g’指定颜色是绿色;
- marker='o’指定参数点的形状是圆形;
- label=’(X, Y)'指定在散点图中绘制的参数点使用的图例,与线型图中的图例不同;
- plt.legend(loc=1)对图例的位置进行强制设定,loc=0、1、2、3、4分别代表强制设定在最好的位置、右上角、左上角、左下角、右下角的位置。
6. 直方图
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
np.random.seed(42)
x = np.random.randn(1000)
plt.hist(x, bins=20, color='g') #bins=20指定直方图有20条
plt.title("Example")
plt.xlabel('X_value')
plt.ylabel('Y_value')
plt.show()
7. 饼图
import matplotlib.pyplot as plt
mylabels = ['Dogs', 'Cats', 'Birds']
sizes = [15, 50, 35] #mylabels每部分对应的占比
plt.pie(sizes, explode=(0, 0, 0.1), labels=mylabels, autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.show()
上面的代码中:
- explode定义每部分数据系列之间的间隔,设置(0, 0, 0.1)就能突出第3部分;
- autopct就是将sizes中的数据以所定义的浮点精度进行显示;
- startangle 是绘制第 1 块饼图时该饼图与X轴正方向的夹角度数,这里设置为90,如果不设置就默认为0;
- plt.axis(‘equal’)是必不可少的,用于使X轴和Y轴的刻度保持一致,只有这样,最后得到饼图才是圆形的。