私はタイムスタンプの配列(HH:MM:SS.mmmmmm)と、タイムスタンプ配列の値にそれぞれ対応する浮動小数点数の配列を持っています。MatplotlibでPythonをプロットする時間
Matplotlibを使用して、x軸に時間を、y軸に数値をプロットすることはできますか?
私はしようとしていましたが、何とか浮動小数点配列を受け入れるだけでした。時間をプロットするにはどうしたらいいですか?形式を変更する必要はありますか?
私はタイムスタンプの配列(HH:MM:SS.mmmmmm)と、タイムスタンプ配列の値にそれぞれ対応する浮動小数点数の配列を持っています。MatplotlibでPythonをプロットする時間
Matplotlibを使用して、x軸に時間を、y軸に数値をプロットすることはできますか?
私はしようとしていましたが、何とか浮動小数点配列を受け入れるだけでした。時間をプロットするにはどうしたらいいですか?形式を変更する必要はありますか?
まず、タイムスタンプをPython datetime
オブジェクト(datetime.strptime
を使用)に変換する必要があります。次に、date2num
を使用して日付をmatplotlib形式に変換します。 plot_date
を使用して
プロットの日付と値:
dates = matplotlib.dates.date2num(list_of_datetimes)
matplotlib.pyplot.plot_date(dates, values)
あなたはまた(その文字列表現からそれらを解析した後)pyplot.plotを使用して、タイムスタンプ、値のペアをプロットすることができます。 (matplotlibのバージョン1.2.0および1.3.1でテスト)
例:ここ
は、散布図と同じです:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
画像を得られました。
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
は次のように画像生成されます
散布図を作成するにはどうすればいいですか? – andi
@andi私の例のように動作するはずです( 'plot'を' scatter'に変更してください)。 – moooeeeep
なぜこれは私が実際に誰も*散布*散布図を使用していない場所で遭遇した5番目の質問です - それは動作しません理解していません。 'タイプエラー - 無効なタイプ昇格'。 – dwanderson
7年後にこのコードは、私を助けています。 しかし、私の時はまだ正しく表示されませんでした。 matplotlibの2.0.0を使用し
と私は(%のH:%のM)に形式を変更ポールH.によってEditing the date formatting of x-axis tick labels in matplotlibから
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
を次のコードビットを追加しなければならなかったと時間が正しく表示されます。
コミュニティに感謝します。
matplotlibバージョン2.0.2を使用してこの問題が発生しました。上の例を実行すると、私は中心に置かれた一連の気泡を得ました。
Iは、別の行を追加することによって、問題を "固定":
plt.plot([],[])
を全体のコードスニペットは、次のようになる。
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot([],[])
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.show()
plt.close()
これは、必要に応じて分散気泡を有する画像を生成します。
更新されたバージョンをありがとうございます。 – Aventinus
これは、日付またはちょうど時間をプロットしますか?私は唯一の時間datetimeに変換するので、年が1990年に設定されているので。 – randomThought
"... datetimeに変換すると、年は1990年に設定されます":あなたは文字列からdatetimeに変換するために使用するコードを投稿してください?変換で何かが間違っている可能性があります。 Re。チャートラベルの書式設定については、J. K.Seppänenが提供するdate_demo1リンクを参照してください。 matplotのlibのドキュメントは素晴らしい、BTWです。 http://matplotlib.sourceforge.net/index.html – codeape
plot_dates - > matplotlib.pyplot.plot_date(日付、値) – Pete