2014-02-20 2 views
29
import pylab as plt 

x = range(1, 7) 
y = (220, 300, 300, 290, 320, 315) 

def test(axes): 
    axes.bar(x,y) 
    axes.set_xticks(x, [i+100 for i in x]) 

a = plt.subplot(1,2,1) 
test(a) 
b = plt.subplot(1,2,2) 
test(b) 

enter image description hereПочему set_xticks не устанавливает метки тиков?

Я ожидаю в xlabs как 101, 102 ... Однако, если я переключиться использовать plt.xticks(x, [i+100 for i in x]) и переписать функцию в явном виде, она работает.

+0

Я думаю, потому что в вашем коде set_xticks получает объект генератора, а не список. Попробуйте 'list ([i + 100 для i в x)] вместо. – rabs

+1

@rabs нет никакого генератора, они оба списка, я использую python 2 – colinfang

ответ

57

.set_xticks() на осях установит местоположения, а set_xticklabels() установит отображаемый текст.

def test(axes): 
    axes.bar(x,y) 
    axes.set_xticks(x) 
    axes.set_xticklabels([i+100 for i in x]) 

enter image description here

+1

Так прекрасно! Этот ответ по-прежнему полезен спустя годы, спасибо! –

+0

@RichardRast и все еще кажется странным. – hyst329

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