获取要用作索引的默认xtick label文本以使用其他tex更新tick标签

2024-05-14 00:10:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目的是:绘制一些东西,得到与默认的x-tick标签相对应的数字,并使用这些数字来索引日期列表,这样我就可以用这些日期代替默认标签。在

假设我有两个列表:

my_data = range(30)
dates_ls = ['date_str1', 'date_str2', ... , 'date_str30']

{{1}从cdx开始,用数字来代替cdx,这意味着从cdx开始的数据。在

编辑:所以,问题似乎是由于我处于for循环中:

^{pr2}$

在上面,我循环使用URL名称和metrics,它们是字典键的列表,允许我获取data2plot,这只是一个数字列表。如果我突出显示并运行for循环的代码,它可以正常工作,但是如果我运行整个循环,产生多个数字,x_labs1最终将是一个0的列表,因此我所有的x-tick标签都是相同的,每个标签都是dates\ls中的第一个项目。在


Tags: 目的列表fordatadatemy绘制range
1条回答
网友
1楼 · 发布于 2024-05-14 00:10:15

这个问题的方法不太适合确定地设置勾选标签。Ticklabels应该根据它们标记的值而不是屏幕上的位置来设置。在

为了定制ticklabels,FuncFormatter通常很有用。这可以使用一个函数作为输入,返回所需的ticklabel,给定要勾选的x值。在

def fmt(x,pos):
    if x in range(len(dates_ls)):
        return dates_ls[int(x)]
    else:
        return ""

# then later
ax.xaxis.set_major_formatter(FuncFormatter(fmt))    
plt.setp(ax.get_xticklabels(), fontsize=8, rotation=45, ha='right')

完整示例:

^{pr2}$

enter image description here

注意,如果这样做的目的是在轴上显示日期时间,那么它就太复杂了。相反,使用datetime对象直接绘制数据,如Datetime example

相关问题 更多 >