ano*_*428 10 python linegraph matplotlib
如何将索引1,2,3 .... n中的x_axis标签设置为不同的东西.
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()
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError:'module'对象没有属性'set_xticks'
在这里,我无法将lambda_beta元组的值设置为x轴上每个刻度的值,因为它表示plt没有这样的方法.如何才能实现这一目标?我使用了xticks,因为这是我在matplotlib中生成直方图时的方法.任何帮助,将不胜感激.提前致谢!
unu*_*tbu 19
set_xticks和set_xticklabels是轴方法,而不是plt模块命名空间中的函数.这是错误消息的含义,'module' object has no attribute 'set_xticks'.
此外,
[i for i,item in enumerate(lam_beta)]
Run Code Online (Sandbox Code Playgroud)
可以简化为
range(len(lam_beta))
Run Code Online (Sandbox Code Playgroud)
和
[item for item in lam_beta]
Run Code Online (Sandbox Code Playgroud)
可以简化为
lam_beta
Run Code Online (Sandbox Code Playgroud)
亲自动手的方便方法axes是调用
plt.subplots:
所以:
fig, ax = plt.subplots()
...
ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')
Run Code Online (Sandbox Code Playgroud)
ax是一个Axes对象.调用Axes方法是使用matplotlib的面向对象方法.
或者,您可以pylab通过调用使用Matlab样式的界面plt.xticks.如果我们定义
loc = range(len(lam_beta))
labels = lam_beta
Run Code Online (Sandbox Code Playgroud)
然后
plt.xticks(loc, labels, rotation='vertical')
Run Code Online (Sandbox Code Playgroud)
相当于
fig, ax = plt.subplots()
ax.set_xticks(loc)
ax.set_xticklabels(labels, rotation='vertical')
Run Code Online (Sandbox Code Playgroud)
plt.xticks 将刻度线位置和标签设置为当前轴.
列表理解
[hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)]
Run Code Online (Sandbox Code Playgroud)
可以简化为
hr_values_per_chunk[chunk][:len(lam_beta)]
Run Code Online (Sandbox Code Playgroud)
您可以使用ax.set_color_cycle避免color为每次调用设置参数: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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42510 次 |
| 最近记录: |