matplotlib 및 pyplot을 사용하여 Python에서 온도 플롯을 만들었지 만 x 축의 첫 번째 값에 대한 날짜 레이블을 추가하는 방법을 알지 못합니다. 마지막 레이블. DayLocator의 여러 반복을 시도했지만 아무 소용이 없습니다. 나는 실제 플롯의 범위를 동일하게 유지하고 플롯 enter image description here에서와 같이 각 날에 대한 작은 틱을 유지하고자하므로 라인 플롯의 시작 또는 끝에 빈 공간이 없습니다. 데이터는 06/01부터 08/30까지입니다. 2017-06-01
실제로 일부인 경우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 1 00 : 10'을 사용하면 자정 이후 10 분 (자정 이후)이기 때문에 '6 1'이 표시되지 않으므로 '6 1'은 그래프의 일부가 아닙니다. . 위의 코드에서'datetime.datetime (201761010)'을 사용하여 테스트 할 수 있습니다. 그러나 '6 1 00 : 00'이 데이터의 일부이므로 작동해야합니다. 또는 실제 데이터와 관계없이'ax.set_xlim (datetime.datetime (2017,6,1), datetime.datetime (2017,8,30))'을 사용하여 플롯의 한계가 표시 할 날짜가 그래프에 포함됩니다. – ImportanceOfBeingErnest