gpt4 book ai didi

python - matplotlib 绘图集 x_ticks

转载 作者:太空狗 更新时间:2023-10-29 19:35:58 25 4
gpt4 key购买 nike

我如何将索引 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()

错误:

AttributeError: 'module' 对象没有属性 'set_xticks'

这里我无法将 lambda_beta 元组的值设置为 x 轴上每个刻度的值,因为它说 plt 没有这样的方法。我怎样才能为 plt 实现这一目标?我使用 xticks 是因为我在 matplotlib 中生成直方图时就是这样做的。任何帮助,将不胜感激。提前致谢!

最佳答案

set_xticksset_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

获取的一种便捷方法是调用 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.plot 设置 color 参数,方法是使用 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()

关于python - matplotlib 绘图集 x_ticks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com