python可视化读取数据库MySQL中数据
import pymysql
from pylab import *
from matplotlib.pyplot import MultipleLocator
# 设置字体为楷体
matplotlib.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus']=False # 这两行需要手动设置
# 添加这条可以让图形显示中文
# 打开数据库连接
db = pymysql.connect(host='192.168.1.185', user='root', password='123456',
port=3306, db='farcar', charset='utf8')
print("connect success")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# sql = "select * from imu"
# # 使用游标对象执行SQL语句;
# cursor.execute(sql)
# # 使用fetchone()方法,获取返回的结果,但是需要用变量保存返回结果;
# data = cursor.fetchone()
# print(data)
# SQL 查询语句
sql = "SELECT * FROM imu"
x_axis_data = []
y_axis_data = []
z_axis_data = []
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
num = int(row[0])
time = row[1]
x = float(row[2])
y = float(row[3])
z = float(row[4])
# 打印结果
# print("num=%d,time=%s,x=%f,y=%f,z=%f" %
# (num, time, x, y, z))
x_axis_data.append(x)
y_axis_data.append(y)
z_axis_data.append(z)
plt.subplot(3, 1, 1)
plt.xlim(0, 50)
plt.ylim(-0.5, 0.5)
plt.xlabel('time')
plt.ylabel('imu x')
plt.plot(x_axis_data, 'ro-',
color='magenta', alpha=0.8, linewidth=1, label='x')
plt.legend(loc="upper right")
plt.subplot(3, 1, 2)
plt.xlim(0, 50)
plt.ylim(-0.5, 0.5)
plt.xlabel('time')
plt.ylabel('imu y')
plt.plot(y_axis_data, 'ro-',
color='green', alpha=0.8, linewidth=1, label='y')
plt.legend(loc="upper right")
plt.subplot(3, 1, 3)
plt.xlim(0, 50)
plt.ylim(-0.5, 0.5)
plt.xlabel('time')
plt.ylabel('imu z')
plt.plot(z_axis_data, 'ro-',
color='red', alpha=0.8, linewidth=1, label='z')
# 显示标签,如果不加这句,即使在plot中加了label='x'的参数,最终还是不会显示标签
plt.legend(loc="upper right")
x_major_locator = MultipleLocator(0.1)
# ax为两条坐标轴的实例
plt.show()
except SyntaxError:
print("SyntaxError")
# 关闭数据库连接
db.close()