【问题标题】:matplotlib using text instead of number in y ticksmatplotlib 使用文本而不是 y 刻度中的数字
【发布时间】: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


    【解决方案1】:

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

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

    以及由此产生的情节:

    【讨论】:

      【解决方案2】:

      这应该可以解决问题:

      plt.xticks(tick_loc, tick_names)
      

      tick_loc 设置刻度的位置,tick_names 设置显示的内容。

      【讨论】:

      • 通过使用 "ax.set_yticklabels(y_labels_dict,fontproperties=zhfont1)" 我可以标记 y 轴,但我无法根据值标签对绘制我的 y 值列表。
      • 顺便说一句,调用ax.set_yticks(tick_loc) 然后ax.set_yticklabels(tick_names) 也可以。
      • 你拯救了我的一天! @Julien Bernu,我真是个傻瓜,我几乎无法解释你的建议,但现在我明白了,谢谢!我不应该跳过 matplotlib 的初学者的 tuts,完成这项任务后,我将逐步学习它。
      猜你喜欢
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多