2015-10-12 4 views
3

Я получил этот кадр данныхПочему Pandas неправильно отображает значения индекса (x_ticklabels)?

     Poverty  White  Black Native_American 
CHSI_State_Name               
Alabama    17.085075 69.795522 28.510448   0.570149 
Alaska    12.144444 54.485185 1.174074  36.159259 
Arizona    16.840000 81.086667 1.886667  14.813333 
... 

И я сюжет моя фигура, как это:

fig, ax = plt.subplots() 
poverty.plot(ax = ax, figsize = (16, 8)) 
ax.set_xticklabels(poverty.index, rotation = 90) 

fig.savefig('output7.png', xbbox_inches = 'tight') 

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

Что я делаю неправильно? Благодаря!

ответ

1

Проблема в коде, что

ax.set_xticklabels(poverty.index, rotation = 90) 

устанавливает xticklabels на диапазон данных. Если ваши данные варьируются от 10 до 16, они будут помещать имена на 10,11,12,13,14 и 15. Вместо того, чтобы помещать метки на каждое целое число xtick, вы также должны указать позицию/порядок меток.

С помощью

ax.set_xticks(range(len(poverty.index))) 

Вы указываете диапазон, как большой, как poverty.index, который гарантирует, что каждая метка находится внутри вашего участка.

0

Попробуйте заменить ax.set_xticklabels(poverty.index, rotation = 90) с:

locs, labels = plt.xticks() 
plt.setp(labels, rotation=90) 

Для меня он работает с ожидаемым поведением. Но на самом деле я не знаю, как ваш метод не работает. Это предложение об обходе. Надеюсь, это поможет.

+0

Лучше, но не совсем. Это работает по какой-то причине: ax.set_xticklabels (poor.index, rotation = 90) ax.set_xticks (range (len (poor.index))) – Mike

1

Это, кажется, сделать это:

ax.set_xticklabels(poverty.index, rotation = 90) 
ax.set_xticks(range(len(poverty.index))) 
Смежные вопросы