如何删除子图的框架并添加边距

问题描述 投票:0回答:1

我有两个这样的子图:

enter image description here

我用这样的代码生成它们:

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)

它影响两个子图,每个子图都需要不同的调整 .

matplotlib subplot
1个回答
0
投票

来自这个问题

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)

当你有多个子图时,这将不起作用。只有最后一个轴的框架才会被移除。

© www.soinside.com 2019 - 2024. All rights reserved.