我想从MySQL数据库创建温度和时间数据图。使用matplotlib和pandas使用python3on raspbian我试图在Y轴上插入温度,在X轴上插入时间。
Y轴工作正常,它绘制temps(float)没有任何问题。但是,当我尝试添加time(time)时,它会输出我假设的错误数据,因为它具有不同的数据类型。如果我使用其他列,如ID(int),那么它的工作原理。我不确定是否需要将时间转换为字符串或者是否有其他方法。
答案可能在于Pandas中列的更改数据类型看似相似,但由于我从MySQL插入数据,我不确定如何将其应用于我自己的问题。
import matplotlib.pyplot as plt
import pandas as pd
import MySQLdb
def mysql_select_all():
conn = MySQLdb.connect(host='localhost',
user='user',
passwd='password',
db='database')
cursor = conn.cursor()
sql = "SELECT time,temperature FROM table ORDER BY time DESC LIMIT 288"
cursor.execute(sql)
result = cursor.fetchall()
df = pd.DataFrame(list(result),columns=["time","temperature"])
x = df.time
y = df.temperature
plt.title("Temperature Data from Previous 24 Hours", fontsize="20")
plt.plot(x, y)
plt.xlabel("Time")
plt.ylabel("Temperature (\u2103)")
plt.tick_params(axis='both',which='major',labelsize=14)
plt.savefig('test.png')
cursor.close()
print("Start")
mysql_select_all()
print("End")
上面的代码目前输出下面的图像。
最好以这种方式导入日期:
from matplotlib.dates import (YEARLY, DateFormatter,
rrulewrapper, RRuleLocator, drange)
然后使用
plt.plot_date(x,y)
如果你需要转换它只需使用:
matplotlib.dates.date2num(x)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。