Matplotlib子图

时间:2018-07-06 22:13:47

标签: python matplotlib subplot

我有以下代码可以生成两个图表,但我想使用子图将它们并排放置。我该怎么办?

p1 = df1.var1.value_counts(normalize=True).sort_index()
p2 = df2.var2.value_counts(normalize=True).sort_index()

p2.plot(kind='barh').invert_yaxis()
plt.xlim(0, 0.5)
plt.title('my title1')
plt.xlabel('% of Users')
plt.ylabel('my ylabel 1')
plt.show()

p1.plot(kind='barh').invert_yaxis()
plt.xlim(0, 0.5)
plt.title('my title 2')
plt.xlabel('% of Users')
plt.ylabel('my ylabel 2')
plt.show()

我开始将add_subplot与以下代码一起使用,但是不确定如何将以上代码添加到图中。任何帮助将不胜感激!

fig = plt.figure()

fig1 = fig.add_subplot(121)
fig2 = fig.add_subplot(122)

1 个答案:

答案 0 :(得分:1)

创建具有两个子图的图形

fig, axs = plt.subplots(ncols=2)

并绘制相应轴对象,例如

p2.plot(kind='barh', ax=axs[0]).invert_yaxis()
axs[0].set_xlim(0, 0.5)
axs[0].set_title('my title1')
axs[0].set_xlabel('% of Users')
axs[0].set_ylabel('my ylabel 1')

,因此axs[1]对应p1

请注意,axes对象使用方法ax.set_xlabel而不是plt.xlabel更新标签。您可以在这里找到更多信息:https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes

希望这会有所帮助。