2016-12-05 17 views
0

的順序我有這樣一個情節:刪除空白和改變的次要情節

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()只適用於第三個情節。

+0

http://matplotlib.org/1.3.1/api/pyplot_api.html#matplotlib.pyplot.subplots_adjust爲whitesapce。 – wwii

回答

1

如前所述,如果你改變Y型刻度的量,你就可以擺脫「空格」的。另外,gca()方法g ets c urrent a xes,在你的情況下,它總是最後一個。爲了反轉每個軸,明確地告訴每個軸。例如,對於一個軸:

[...] 
ax1.set_yticks(np.arange(len(a1_x))) 
ax1.set_yticklabels(a1_x, minor=False) 
ax1.get_xaxis().set_visible(False) 
ax1.invert_yaxis() 
[...] 
1

這不是一個matplotlib.pyplot -native解決方案,因而不是正確的解決方案,但前兩個地塊如果不是以下行(帶爲例 - 相關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) 
+1

確實有效 – spore234