온도 및 날짜 데이터베이스에있는 데이터 그래프를 그려보고 싶습니다. 데이터 날짜는 문자열 유형입니다. 문자열 형식을 date2num()
함수를 사용하여 matplot date로 변환하려고했습니다. 그러나 그래프를 그릴 때 시간이 시간의 형태로 표시되는 것을 관찰했습니다. 왜 이런 일이 벌어지고 있으며 X 축에서 날짜 형식을 지정하려면 (YYYY-MM-DD) 어떻게해야합니까? 데이터베이스로부터 페치SQL 데이터베이스에서 Python으로 matplotlib 날짜로 문자열 날짜 (YYYY-MM-DD)를 변환하는 방법은 무엇입니까?
import MySQLdb
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from dateutil import parser
from matplotlib import style
import datetime
def graph_data():
con =MySQLdb.connect("***.***.*.**","monitor", "password","temp")
cursor=con.cursor()
style.use('fivethirtyeight')
cursor.execute('select tdate,ttime,temperature from temptb')
rows=cursor.fetchall()
timenow=[]
temperature=[]
for eachRow in rows:
temperature.append(eachRow[2])
timenow.append(eachRow[0])
#dates=[mdates.date2num(t) for t in timenow]
fig=plt.figure()
ax1=fig.add_subplot(111)
ax1.set_title("Temperature Analysis")
ax1.set_ylabel("Temperature")
ax1.set_xlabel("Time")
#ax1.plot_date(dates, temperature, '-', label="tempurature", color='r')
ax1.plot_date(timenow, temperature, '-', label="tempurature", color='r')
fig.autofmt_xdate(rotation=60)
fig.tight_layout()
ax1.grid(True)
ax1.legend(loc='best', framealpha=0.5)
plt.savefig("figure.png")
graph_data()
데이터 : 2017년 12월 14일 16 2017년 12월 14일 17 2017년 12월 13일 18 2017년 12월 14일 18 2017년 12월 14일 21 2,017 -12-13 22 2017년 12월 14일 23 2017년 12월 13일 25 2017년 12월 14일 26
,536,913,632 10편집 1 : 를 사용하지만 출력에 변화가 없다 timenow ax1.plot_date에서 날짜의 장소 (날짜, 온도, '-', 라벨 = "tempurature", 컬러 = 'R')에서
날짜 또는 시간을 플로팅 하시겠습니까? 같은 날에 많은 점수를 얻었던 날짜 만 플롯하는 것처럼 보입니다. 그게 바람직 할까? – ImportanceOfBeingErnest
@ImportanceOfBeingErnest 예, 지금은 충분합니다. –
그렇다면 무엇이 잘못 될지 이해하지 못합니다. 'ax1.plot (timenow, temperature)'를 사용하는 것만으로 정확하게 날짜 라벨이있는 플롯을 제공해야합니다. – ImportanceOfBeingErnest