matplotlibとpyplotを使用してPythonで温度プロットを作成しましたが、x軸の最初の値の日付ラベルを追加する方法と、最後のラベル。私はDayLocatorの複数の反復を試みましたが、役に立たない。私は実際のプロットの範囲を同じに保ちたいと思い、プロットのように毎日のマイナーダニを保持したいのですが、enter image description hereのように、ラインプロットの最初または最後に空白がありません。データは06/01から08/30までです。Matplotlibのグラフの開始/終了時のX軸ラベル
import csv
import pylab
from datetime import datetime
from matplotlib import pyplot as plt
import matplotlib.dates as mdates
filename ='Summer17.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
dates_list, temperature, dewpoint = [], [], []
for row in reader:
if len(row) < 4:
continue
datestring = ("2017/{0:}/{1:} {2:}".format(*row))
date_obj = datetime.strptime(datestring, "%Y/%m/%d %H:%M")
dates_list.append(date_obj)
temp = float(row[3])
temperature.append(temp)
fig = plt.figure(dpi=128, figsize=(10,6))
ax = fig.add_axes([0.1, 0.1, 0.85, 0.75])
plt.plot(dates_list,temperature, linewidth=0.5, c='red')
plt.xlim(dates_list[1],dates_list[-1])
myFmt = mdates.DateFormatter('%m/%d')
months = mdates.MonthLocator()
days1 = mdates.DayLocator(bymonthday=(1,15)) # every Day
dayss = mdates.DayLocator()
ax.xaxis.set_major_formatter(myFmt)
ax.xaxis.set_major_locator(days1)
ax.xaxis.set_minor_locator(dayss)
私のデータは、月、日のために別々の列にCSVであり、そしてHH:MM。私の問題は、最初の日付が6 1 00:10だったと思います。私は6 1 00:00とリストの上部に列を追加しました。これはまだ仕事がありませんでした。だから私は5 31 23:59の上に別の列を追加しました、そして、それは私が欲しがっていた6/01の値を表示します。なぜこのようなことが起こっているのか、なぜ私に説明できますか?ありがとう – Jonathon
私は、6時00分から深夜0時を過ぎているので(つまり深夜以降)、 '6 1 00:10 'を使うと' 6 1'が表示されないので、 '6 1'はグラフの一部ではないことを理解しています。 。上記のコードで 'datetime.datetime(2017,6,1,0,1,0)'を使ってテストできます。しかし、 '6 1 00:00'がデータの一部であるため、うまくいくはずです。あるいは、実際のデータとは無関係に、 'ax.set_xlim(datetime.datetime(2017,6,1)、datetime.datetime(2017,8,30))'を使用して、プロットの限界がマークされるべき日付がグラフに含まれるようにする。 – ImportanceOfBeingErnest