あなたはnp.recfromcsvでファイルを読み込むことができます。次に、時間列をdatetimeオブジェクトに変換します。このオブジェクトに対しては、convtime
関数を定義します。次に、この関数を使用してCSVファイルを読み込みます。
import numpy as np
import matplotlib.pyplot as plt
convtime = lambda x: datetime.datetime.strptime(x, "%H:%M")
all_records = np.recfromcsv("myfilename.csv", names=["time", "user", "val"], converters={0:convtime}) # This says parse column 0 using the convtime function
我々はdatetime
にちょうど時刻部分を与えているので、あなたが気にしている場合は、それに関連する日付を追加することができます1月1900年1として、それは日付を仮定することに注意してください。
ここで、データをプロットします。これは、matplotlibがプロットされているすべての点に対して1つのシンボルしか使用できないという興味深い問題につながります。残念ながら、これはforループを使用する必要があることを意味します。 はほとんどそれをしないこと
symbols = {'user1':'*', 'user3':'o', 'empty':'x'}
colours = {'user1':'blue', 'user3':'red', 'empty':'orange'}
for rec in all_records:
plt.scatter(rec['time'], rec['val'], c=colours[rec['user']], marker=symbols[rec['user']])
:まず、私たちは各ユーザのシンボルと色のdict
Sを定義してみましょう。私たちはまだ伝説を見逃しています。このforループの欠点は、ファイル内のすべての行が凡例に1つのエントリを作成することです。私たちはカスタムレジェンドを作成することでこれを打ち負かしました。
import matplotlib.lines as mlines
legend_list = []
for user in symbols.keys():
legend_list.append(mlines.Line2D([], [], color=colours[user], marker=symbols[user], ls='none', label=user))
plt.legend(loc='upper right', handles=legend_list)
plt.show()
それです!あなたのプロットが盛んに表示されたら、plt.xlim()
を使用して好みに合わせて調整してください。
出典
2017-04-27 09:32:15
VBB