python sqlite数据库画图,Python sqlite3和matplotlib绘制第一个图形

你是正确的,^{}返回一个^{}可映射/iterable对象的列表(可能是空的),你只是颠倒了顺序-你试图将温度场解析为日期。

并且您的values变量没有定义。在

试试这个:c.execute('SELECT temperature, humidity, feelslike, timenow FROM external')

data = c.fetchall()

# data[*][0] = temperature

# data[*][1] = humidity

# data[*][2] = feelslike

# data[*][3] = timenow

temperature = []

humidity = []

feelslike = []

timenow = []

for row in data:

temperature.append(row[0])

humidity.append(row[1])

feelslike.append(row[2])

timenow.append(parser.parse(row[3]))

另外,由于Row除了按索引访问还支持按列名映射访问,您可以执行以下操作:

^{pr2}$

然而,通过索引进行访问更快、更高效。在

对于绘图,需要多次调用plot,每次都使用相同的x和不同的y数据。为了测试,我生成了我的数据集:random.seed(0)

data = [(random.uniform(10, 25),

random.uniform(70, 99),

random.uniform(15, 30),

"2017-07-24 12:{:02d}:00.{:06d}".format(i, i * 1000 + int(random.uniform(0, 50)))

) for i in range(10)]

而不是使用数据库和data = c.fetchall()。在

现在您有了一组float数据点和关联的datetime.datetime对象。但是,matplotlib.axes.Axes.plot_date函数接受:x and/or y can be a sequence of dates represented as float days since

0001-01-01 UTC.

要将matplotlib的日期从datetime.datetime对象转换为float days,需要使用函数matplotlib.dates.date2num。在for row in data:

temperature.append(row[0])

humidity.append(row[1])

feelslike.append(row[2])

timenow.append(parser.parse(row[3]))

# Convert datetime.datetime to float days since 0001-01-01 UTC.

dates = [date2num(t) for t in timenow]

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_title("My environmental data")

# Configure x-ticks

ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%Y %H:%M'))

# Plot temperature data on left Y axis

ax1.set_ylabel("Temperature [°C]")

ax1.plot_date(dates, temperature, '-', label="Temperature", color='r')

ax1.plot_date(dates, feelslike, '-', label="Feels like", color='b')

# Plot humidity data on right Y axis

ax2 = ax1.twinx()

ax2.set_ylabel("Humidity [% RH]")

ax2.plot_date(dates, humidity, '-', label="Humidity", color='g')

# Format the x-axis for dates (label formatting, rotation)

fig.autofmt_xdate(rotation=60)

fig.tight_layout()

# Show grids and legends

ax1.grid(True)

ax1.legend(loc='best', framealpha=0.5)

ax2.legend(loc='best', framealpha=0.5)

plt.savefig("figure.png")

此代码生成以下图像:

D5mZj.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值