python - 并排的两个具有不同比例的条形图
问题描述
我正在使用以下 matplotlib 代码并排创建两个条形图。但它们的尺度不同。我想删除不需要的白色区域。
action_number = [5, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
5, 6, 6, 6, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
action_list = ['DrawSword', 'Kiss', 'RideBike', 'Dribble', 'Hug', 'Dive',
'Cartwheel', 'Drink', 'Climb', 'Eat', 'Walk', 'FallFloor',
'Stand', 'Sword', 'Pick', 'SwingBaseb', 'Handstand', 'ShootBow',
'DrawSword', 'Kiss', 'RideBike', 'Dribble', 'Hug', 'Dive',
'Cartwheel', 'Drink', 'Climb', 'Eat', 'Walk', 'FallFloor',
'Stand', 'Sword', 'Pick', 'SwingBaseb', 'Handstand', 'ShootBow']
def bar_plot(action_list, action_number, ax):
y_pos = np.arange(len(action_list))
ax.barh(y_pos, action_number, height=0.75, align='center', color='b')
ax.set_yticks(y_pos)
ax.set_yticklabels(action_list)
ax.invert_yaxis()
ax.tick_params(labelsize=12, which='both', axis='both')
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
plt.autoscale(tight=True)
plt.tight_layout()
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 10))
fig.subplots_adjust(wspace=0, hspace=0)
bar_plot(action_list, action_number, ax1)
bar_plot(action_list, action_number, ax2)
plt.savefig('action_attribute_sidebyside.pdf',bbox_inches="tight", pad_inches=0)
解决方案
删除plt.autoscale
并plt.tight_layout
退出bar_plot
:
def bar_plot(action_list, action_number, ax):
y_pos = np.arange(len(action_list))
ax.barh(y_pos, action_number, height=0.75, align='center', color='b')
ax.set_yticks(y_pos)
ax.set_yticklabels(action_list)
ax.invert_yaxis()
ax.tick_params(labelsize=12, which='both', axis='both')
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
# set the limits manually
ax.set_ylim(-.5, len(action_list)-0.5)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 10))
fig.subplots_adjust(wspace=0, hspace=0)
bar_plot(action_list, action_number, ax1)
bar_plot(action_list, action_number, ax2)
plt.tight_layout()
输出:
推荐阅读
- swift - 在更新 ObservedObject 时更新 Picker
- javascript - Javascript .indexOf 匹配的 HTML 符号
- java - Creating a new window on button click - Vaadin14
- mysql - Why does this query suddenly return no results when adding more parameters in an IN clause?
- paypal-sandbox - While subscribe a user I got eror code 91927 in braintree using node js
- c - 使用指针打印二维数组时出错
- angular - 具有嵌套对象的 Angular Material 中的默认排序
- android - 发布多个 MutableLiveData 没有顺序
- python - 按数据分组到详细数据
- javascript - 我的代码有什么问题 - 它没有关闭