matplotlib plot set x_ticks

只愿长相守 提交于 2019-11-29 02:08:16

set_xticks and set_xticklabels are axes methods, not functions in the plt module namespace. This is the meaning of the error message, 'module' object has no attribute 'set_xticks'.

Moreover,

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

can be simplified to

range(len(lam_beta))

and

[item for item in lam_beta]

can be simplified to

lam_beta

A convenient way to get your hands on the axes is to call plt.subplots:

So:

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

ax is an Axes object. Calling Axes methods is the object-oriented approach to using matplotlib.


Alternatively, you could use the Matlab-style pylab interface by calling plt.xticks. If we define

loc = range(len(lam_beta))
labels = lam_beta

then

plt.xticks(loc, labels, rotation='vertical')

is equivalent to

fig, ax = plt.subplots()
ax.set_xticks(loc)
ax.set_xticklabels(labels, rotation='vertical')

plt.xticks sets the tick locations and labels to the current axes.


The list comprehension

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

could be simplified to

hr_values_per_chunk[chunk][:len(lam_beta)]

And you could eschew setting the color parameter for each call to ax.plot by using 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()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!