删除空格并更改子图的顺序

时间:2016-12-05 15:03:43

标签: python matplotlib plot

我有一个这样的情节:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

a1 = [1.9, 1.8, 1.5, 1.4]
a1_x = ["a", "b", "c", "d"]

a2 = [2.5, 2.3, 2.2, 2.1]
a2_x = ["q", "w", "e", "r"]

a3 = [4.9, 4.8, 4.6, 4.5]
a3_x = ["x", "c", "v", "b"]

pos = np.arange(4)

f, ((ax1, ax2, ax3)) = plt.subplots(3, 1, figsize=(8, 5))
ax1.barh(pos, a1, align='center')
ax1.set_yticks(np.arange(4))
ax1.set_yticklabels(a1_x, minor=False)
ax1.get_xaxis().set_visible(False)
f.gca().invert_yaxis()

ax2.barh(pos, a2, align='center')
ax2.set_yticks(np.arange(4))
ax2.set_yticklabels(a2_x, minor=False)
ax2.get_xaxis().set_visible(False)
f.gca().invert_yaxis()

ax3.barh(pos, a3, align='center')
ax3.set_yticks(np.arange(4))
ax3.set_yticklabels(a3_x, minor=False)
ax3.get_xaxis().set_visible(False)

f.gca().invert_yaxis()
f.tight_layout()

enter image description here

如何删除每个子图的空白,并翻转前两个图的顺序。 f.gca().invert_yaxis()仅适用于第三个情节。

1 个答案:

答案 0 :(得分:1)

这不是matplotlib.pyplot - 本机解决方案,因此不是正确的解决方案,但如果不是以下行(例如与a1相关的对象),前两个图的情况会发生,但是a2 - 相关的那些

是相同的
...
ax1.barh(pos, a1, align='center')
ax1.set_yticks(np.arange(10))
ax1.set_yticklabels(a1_x, minor=False)
...
你写了

...
ax1.barh(pos, a1[::-1], align='center')
ax1.set_yticks(np.arange(len(a1)))
ax1.set_yticklabels(a1_x[::-1], minor=False)