【发布时间】:2016-11-09 07:20:35
【问题描述】:
我想要我的 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()
上面这段代码的结果是:
显然这不是我所期望的。 还, 我想知道是否有更好的方法来说明这种事件跟踪?
更新: 我可以使用这两行来实现我的期望:
ax.set_yticks(xrange(len(y_text_dict)))
ax.set_yticklabels(y_text_dict)
【问题讨论】:
标签: python datetime matplotlib