在Python中进行数据可视化的时候,matplotlib是最常用的绘图库之一。绘制图形的时候,通常需要使用figure和axies两个对象。这两个对象的区别是:
- Figure是一个顶层容器,一个画布,就是我们看到的一个整体框架
- Axes是Figure中的子容器,图表绘制的地方
因为Figure中可以包含多个Axes,所以我们可以在同一个figure对象中绘制多个子图(也称为子绘图区),在每个Axes对象中进行数据绘制。下面是两个例子:
绘制多个子图
在一个figure中绘制多张图时,需要创建多个subplot,即Axes对象。下面的代码绘制了4张子图:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(-x)
# 创建figure
fig = plt.figure()
# 创建subplot
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)
# 在每个subplot中绘制数据
ax1.plot(x, y1, 'r--')
ax1.set_title('subplot 1')
ax2.plot(x, y2, 'g--')
ax2.set_title('subplot 2')
ax3.plot(x, y3, 'b--')
ax3.set_title('subplot 3')
ax4.plot(x, y4, 'y--')
ax4.set_title('subplot 4')
# 显示图形
plt.show()
在这个例子中,我们首先使用plt.figure()
函数创建一个figure对象fig,然后再用fig.add_subplot()
方法创建4个subplot对象。
自定义坐标系
使用Figure和Axes对象还可以实现自定义坐标系的功能。下面的代码就示范了如何在棱形坐标系和极坐标系中绘制数据:
import matplotlib.pyplot as plt
import numpy as np
## 棱形坐标系
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
ax1.spines['left'].set_position(('data', 0))
ax1.spines['bottom'].set_position(('data', 0))
x = np.linspace(-1, 1, 100)
y = x**3 - x
ax1.plot(x, y)
plt.show()
## 极坐标系
fig = plt.figure()
ax2 = fig.add_subplot(1, 1, 1, projection='polar')
theta = np.linspace(0, 2*np.pi, 50)
r = theta**2
ax2.plot(theta, r)
plt.show()
在这个例子中,我们使用了ax.spines
属性来控制坐标轴的位置,实现了一个棱形坐标系。在第二个图中,我们把projection
参数设置为'polar',就可以实现极坐标系。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中figure与axies绘图有哪些不同 - Python技术站