python:可以创建3个子图(在两个轴上)?

时间:2014-08-10 05:59:51

标签: python matplotlib plot subplot

以下代码给出了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个位置创建3个子图,同时完全摆脱右下角(ax[1,1])? (最终看起来像一个子图与主图的x轴对齐,而另一个子图与y轴对齐。)

1 个答案:

答案 0 :(得分: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() 

编辑:添加了从here改编的轮廓示例。