私のy軸の目盛りは数字ではなくテキストラベルで、私のxは一連のdatetimeオブジェクトです。私はプロットの間に男のイベントのトラックを表現したい日、それはシーンです。matplotlib yの数字の代わりにテキストを使用
は、これは私のコードです:
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()
上記のコードの結果は次のとおりです。
どうやらこれは私が期待するものではありません。 また、 このようなイベントトラッキングを説明するためのより良い方法があるのでしょうか?
更新: 私は何を期待それを作るために、これらの2つの行を使用することができます。
ax.set_yticks(xrange(len(y_text_dict)))
ax.set_yticklabels(y_text_dict)
:
と結果のプロットをzhfont1) "私はy軸にラベルを付けることができますが、値ラベルのペアに従ってy値リストを作成することはできません。 –
しかし、__my__ソリューションの問題は何ですか? – Julien
btw、 'ax.set_yticks(tick_loc)'と 'ax.set_yticklabels(tick_names)'を呼び出すこともできます。 – Julien