2016-12-05 1 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

Как уже говорилось, если вы измените количество у-тиков, вы сможете избавиться от «непечатаемых». Кроме того, метод 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 решение, и, таким образом, не является правильным решением, но то, что происходит в течение первых двух участков, если вместо следующих линий (Exemple с 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

Смежные вопросы