我有两个这样的子图:
我用这样的代码生成它们:
import matplotlib.pyplot as plt
import pandas as pd
fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
#plot1
df.plot(kind='barh',x='Attributes',y='Counts', ax=ax1, color='#C0C0C0',
width=0.3,legend= False)
ax1.axes.get_xaxis().set_visible(False)
ax1.tick_params(top='off', bottom='off', left='off', right='off',
labelleft='on', labelbottom='on')
#plot2
mypie, _ = ax2.pie(group_size, radius=1.3, labels=group_names, colors=
[a(0.6), b(0.6), c(0.6), d(0.6)])
plt.setp( mypie, width=0.3, edgecolor='white')
我想删除第一个图的框架,我希望第一个图更小并居中,第二个图更大。另外,我想为每个绘图添加适当的边距,以便可以在每个绘图中阅读所有文本。
如果我应用类似的东西
plt.subplots_adjust(left=0.12, bottom=0.11, right=0.7, top=0.78,
wspace=0.2, hspace=0.2)
它影响两个子图,每个子图都需要不同的调整 .
来自这个问题:
ax.set_frame_on(False)
将关闭多部分图中绕轴的框架(例如
ax1, ax2
)。我在我的代码中测试了它,开头为:
fig, (ax1, ax2) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [6, 4]})
fig.set_figheight(6)
...
ax1.set_frame_on(False)
ax2.set_frame_on(False)
并且成功了。对于
matplotlib
中的单窗格绘图,我使用的是:
plt.box(False)
当你有多个子图时,这将不起作用。只有最后一个轴的框架才会被移除。