2015-06-16 2 views
1

Я пытаюсь построить горизонтальную стеклянную гистограмму, но получаю раздражающе большие поля сверху и снизу. Я хотел бы избавиться от этого или контролировать размер.манипулирование верхним и нижним полями в pyplot горизонтальной штабелированной гистограмме (barh)

Ниже приведен пример код и инжир:

from random import random 
Y = ['A', 'B', 'C', 'D', 'E','F','G','H','I','J', 'K'] 
y_pos = np.arange(len(Y)) 
data = [(r, 1-r) for r in [random() for i in range(len(Y))]] 
print data 
a,b = zip(*data) 

fig = plt.figure(figsize=(8,16)) 
ax = fig.add_subplot(111) 
ax.barh(y_pos, a,color='b',align='center') 
ax.barh(y_pos, b,left=a,color='r',align='center') 
ax.set_yticks(y_pos) 
ax.set_yticklabels(Y, size=16) 
ax.set_xlabel('X label', size=20) 

plt.xlim(0,1) #removing the extra x on the right side 

Если вы хотите, чтобы воссоздать точную цифру, последовательность сэмпл создания прилагаемой фигуры («данные»):

[(0,2180251581652276, 0.7819748418347724), (0,20639063565084814, 0,7936093643491519), (0,5402540115461549, +0,45974598845384507), (+0,39283183355790896, 0,607168166442091), (0,5082547993681953, 0,4917452006318047), (0,02489004061858613, 0,9751099593814139), (0,25902114354397665, 0,7409788564560233), (0,12032683729286475, 0,8796731627071352), (+0,41578415717252204, 0,584215842827478), (0,5860546624151288, 0,4 139453375848712), (0,20982523758445237, 0,7901747624155476)]

enter image description here

Я хотел бы иметь гораздо меньший зазор в верхней части 'K', и между осью х и 'A'. Если я изменю 16 в:

fig = plt.figure(figsize=(8,16)) 

до 10 все сжимается, но края по-прежнему относительно большой.

Любые идеи? Спасибо!

+0

Что касается стиля, я импортирую сибирский и шрифт = 'family': 'fantasy', 'weight': 'normal'} matplotlib.rc ('font', ** font) – ScienceFriction

ответ

3

Вы можете добавить эту строку в конце сценария:

plt.ylim(min(y_pos)-1, max(y_pos)+1) 

Это уменьшит рентабельность по ширине в пол-бар.

+0

спасибо! работал как шарм. Я играл с илим до публикации, но не мог понять. – ScienceFriction

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