如何使用子图将图绘制成图

时间:2016-05-26 23:02:48

标签: python matplotlib

我已经阅读了与此相关的答案并遵循了这一点:

fig = plt.figure()
fig.add_subplot(221)   #top left
fig.add_subplot(222)   #top right
fig.add_subplot(223)   #bottom left
fig.add_subplot(224)   #bottom right 
plt.show()

哪个好,现在我有一个有四个空子图的图。

我无法弄清楚如何设置#top left子图以显示我的情节x,其中x是我已经生成的matplotlib.axes.AxesSubplot

我的代码总共是:

plt1 = plot.scatter(foo,bar)
plt2 = plot.line(bar, baz)
plt3 = plot.scatter(you, get)
plt4 = plot.line(the, picture)

fig = plt.figure()
fig.add_subplot(221)   #top left
fig.add_subplot(222)   #top right
fig.add_subplot(223)   #bottom left
fig.add_subplot(224)   #bottom right 

# Here is where I got lost
# I want figure subplot 221 to show plt1 etc...

2 个答案:

答案 0 :(得分:4)

您需要跟踪add_subplot返回的Axes对象。

fig = plt.figure()
ax1 = fig.add_subplot(221)   #top left
ax2 = fig.add_subplot(222)   #top right
ax3 = fig.add_subplot(223)   #bottom left
ax4 = fig.add_subplot(224)   #bottom right 

然后你可以这样做:

ax1.plot(...)
ax2.boxplot(...)
ax3.hist(...)
# etc

但我会这样做:

fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=2, ncols=2)

然后从那里开始。

答案 1 :(得分:1)

在创建子图之前绘制是否为主体?如果不是,请尝试以下代码:

fig = plt.figure()
fig.add_subplot(221)   #top left
plt1 = plt.scatter(foo,bar)
fig.add_subplot(222)   #top right
plt2 = plt.line(bar, baz)
fig.add_subplot(223)   #bottom left
plt3 = plt.scatter(you, get)
fig.add_subplot(224)   #bottom right 
plt4 = plt.line(the, picture)