python:可以在两个轴上创建3个子图吗?
下面的代码会生成4个(2x2)图表:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,5,1)
fig, ax = plt.subplots(2,2)
ax[0,0].plot(x, x)
ax[0,1].plot(x, x*2)
ax[1,0].plot(x, np.sqrt(x))
ax[1,1].plot(x, x**2)
plt.show()
我想知道有没有办法在上面列出的前三个位置创建3个子图,同时完全去掉右下角的那个图(ax[1,1]
)?(最终看起来一个子图和主图的x轴对齐,而另一个和y轴对齐。)
1 个回答
2
使用 subplots
会生成所有的子图,即使你没有在里面放任何东西。那如果用 subplot
呢?
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)
x = np.arange(0,5,1)
plt.subplot(221).contour(X, Y, Z)
plt.subplot(224).plot(x, x*2)
plt.subplot(223).plot(x, np.sqrt(x))
plt.show()
补充说明:添加了一个从 这里 改编的轮廓图示例。