2013-12-02 3 views
3

Как бы установить ярлыки x_axis на индексы 1,2,3 .... n, чтобы быть чем-то другим.matplotlib plot set x_ticks

lam_beta = [(lam1,beta1),(lam1,beta2),(lam1,beta3),....(lam_n,beta_n)] 
chunks = [chunk1,chunk2,...chunk_n] 
ht_values_per_chunk = {chunk1:[val1,val2,...],chunk2:[val1,val2,val3,.....]...} 
color='rgbycmk' 
    j=0 
    for chunk in chunks: 
     plt.plot([hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)],[i for i,item in enumerate(lam_beta)],color=j%len(color)) 
     j+=1 

    plt.set_xticks([i for i,item in enumerate(lam_beta)]) 
    plt.set_xticklabels([item for item in lam_beta],rotation='vertical') 
    plt.show() 

Ошибка:

AttributeError: «модуль» объект имеет не имеет атрибута «set_xticks»

Здесь я не могу установить значение lambda_beta кортежа быть значениями каждого из клещи на оси х, как говорят, у plt такой метод отсутствует. Как я смогу достичь этого для plt? Я использовал xticks, потому что так я сделал это, создавая гистограмму в matplotlib. Любая помощь будет оценена по достоинству. Заранее спасибо!

ответ

9

set_xticks и set_xticklabels - методы осей, а не функции в пространстве имен модулей plt. Это значение сообщения об ошибке, 'module' object has no attribute 'set_xticks'.

Кроме того,

[i for i,item in enumerate(lam_beta)] 

может быть упрощено до

range(len(lam_beta)) 

и

[item for item in lam_beta] 

может быть упрощено до

lam_beta 

удобный способ получить ваши руки на axes, чтобы позвонить plt.subplots:

Итак:

fig, ax = plt.subplots() 
... 
ax.set_xticks(range(len(lam_beta))) 
ax.set_xticklabels(lam_beta, rotation='vertical') 

Список постижение

[hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)] 

может быть упрощено до

hr_values_per_chunk[chunk][:len(lam_beta)] 

И вы могли бы отказаться от установки параметра color для каждого вызова ax.plot с помощью ax.set_color_cycle:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
lam_beta = [(lam1,beta1),(lam1,beta2),(lam1,beta3),....(lam_n,beta_n)] 
chunks = [chunk1,chunk2,...chunk_n] 
ht_values_per_chunk = {chunk1:[val1,val2,...],chunk2:[val1,val2,val3,.....]...} 
color='rgbycmk' 
ax.set_color_cycle(colors) 

for chunk in chunks: 
    vals = hr_values_per_chunk[chunk][:len(lam_beta)] 
    ax.plot(vals, range(len(lam_beta))) 

ax.set_xticks(range(len(lam_beta))) 
ax.set_xticklabels(lam_beta, rotation='vertical') 
plt.show()