gpt4 book ai didi

python - matplotlib 在 y 刻度中使用文本而不是数字

转载 作者:行者123 更新时间:2023-12-02 09:27:50 25 4
gpt4 key购买 nike

我希望我的 y 轴刻度是文本标签而不是数字,我的 x 是一系列日期时间对象,我想要一个图来表示一个人在一天中的事件轨迹,这就是场景。

这是我的代码:

import datetime
from matplotlib import pyplot as plt
from matplotlib import dates
import matplotlib as mpl

y_text_dict = ["go to dinner", "visit my mom", "go to park", "work"]

x_str=["2016-06-30 09:11",
"2016-06-30 10:11",
"2016-06-30 12:10",
"2016-06-30 16:57",
"2016-06-30 17:17",
"2016-06-30 17:33",
"2016-06-30 17:33",
"2016-06-30 17:48",
"2016-06-30 17:58",
"2016-06-30 18:27"]
x = [datetime.datetime.strptime(time, "%Y-%m-%d %H:%M") for time in x_str]
y = [0,3,2,1,2,2,1,1,3,2] #so the event series will be "go to dinner"->"work"->"go to park"->"visit my mom"...
y_text = [y_text_dict[i] for i in y]

zhfont1 = mpl.font_manager.FontProperties(fname='/Library/Fonts/Songti.ttc')

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_yticklabels(y_text_dict,fontproperties=zhfont1)
#ax.set_yticks(y_text)
ax.set_xticks(x)
ax.xaxis.set_major_formatter(dates.DateFormatter('%d/%m/%Y %H:%M'))
ax.grid(True)
fig.autofmt_xdate(rotation=90)
plt.step(x, y, where = 'post')
plt.show()

上面这段代码的结果是:

enter image description here

显然这不是我所期望的。还,我想知道是否有更好的方法来说明这样的事件跟踪?

<小时/>

更新:我可以使用这两行来使其达到我的预期:

ax.set_yticks(xrange(len(y_text_dict)))
ax.set_yticklabels(y_text_dict)

最佳答案

正如 @Julien Bernu 所建议的,我可以通过添加以下两行来使我的示例正常工作:

ax.set_yticks(xrange(len(y_text_dict)))
ax.set_yticklabels(y_text_dict)

以及结果图:

enter image description here

关于python - matplotlib 在 y 刻度中使用文本而不是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38237574/

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