set_xticks和set_xticklabels是axes方法,而不是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
一个方便的方法就是打电话
plt.subplots:
所以:fig, ax = plt.subplots()
...
ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')
ax是一个Axes对象。调用Axes方法是使用matplotlib的面向对象方法。
或者,可以通过调用^{}来使用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设置color参数: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()