我有一个这样的情节:
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()
如何删除每个子图的空白,并翻转前两个图的顺序。 f.gca().invert_yaxis()
仅适用于第三个情节。
答案 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)