set_xticks和
set_xticklabels是轴方法,而不是plt模块命名空间中的函数.这是错误消息的含义,’module’对象没有属性’set_xticks’.
此外,
[i for i,item in enumerate(lam_beta)]
可以简化为
range(len(lam_beta))
和
[item for item in lam_beta]
可以简化为
lam_beta
让您的双手在轴上的便捷方式是打电话
plt.subplots:
所以:
fig, ax = plt.subplots()
...
ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')
ax是一个Axes对象.调用Axes方法是使用matplotlib的面向对象方法.
或者,您可以通过调用plt.xticks来使用Matlab样式的pylab接口.如果我们定义
loc = range(len(lam_beta))
labels = lam_beta
然后
plt.xticks(loc, labels, rotation='vertical')
相当于
fig, ax = plt.subplots()
ax.set_xticks(loc)
ax.set_xticklabels(labels, rotation='vertical')
plt.xticks将刻度位置和标签设置为当前轴.
列表理解
[hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)]
可以简化为
hr_values_per_chunk[chunk][:len(lam_beta)]
并且您可以使用ax.set_color_cycle避免为每次调用ax.plot设置颜色参数:
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()