响应式网站检测工具,营销公司业务范围,刷赞抖音推广网站,wordpress接入信用卡付款需求#xff1a;
在Windows下请用python画出折线图#xff0c;x轴是时间#xff0c;y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时#xff0c;近1天#xff0c;近1个月的。sqlite文件weather_data.db当前目录下#xff0c;建表结构如下…需求
在Windows下请用python画出折线图x轴是时间y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时近1天近1个月的。sqlite文件weather_data.db当前目录下建表结构如下 CREATE TABLE IF not EXISTS weather ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TEXT, weather1 TEXT, temperature TEXT, humidity TEXT, feels_like_temperature TEXT, wind TEXT) 实现代码deepseek、通义、文心一言提供的都报错多次修改后才行
import sqlite3
import pandas as pd
import matplotlib
matplotlib.use(Agg) # 设置为非交互式后端
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib.ticker import MaxNLocator# 连接到SQLite数据库
conn sqlite3.connect(weather_data.db)# 查询数据
query
SELECT timestamp, temperature, feels_like_temperature, humidity
FROM weather
ORDER BY timestamp
# 将数据读取到Pandas DataFrame中
df pd.read_sql_query(query, conn)# 关闭数据库连接
conn.close()# 将timestamp列转换为datetime类型
df[timestamp] pd.to_datetime(df[timestamp])# 设置时间范围为近1小时、近1天、近1个月
now datetime.now()
one_hour_ago now - pd.Timedelta(hours1)
one_day_ago now - pd.Timedelta(days1)
one_month_ago now - pd.Timedelta(days30)# 过滤数据
df_last_hour df[df[timestamp] one_hour_ago]
df_last_day df[df[timestamp] one_day_ago]
df_last_month df[df[timestamp] one_month_ago]# 绘制折线图
def plot_weather_data(data, title):fig, ax1 plt.subplots(figsize(12, 6))# 绘制温度和体感温度color tab:redax1.set_xlabel(Time)ax1.set_ylabel(Temperature (°C), colorcolor)ax1.plot(data[timestamp], data[temperature], labelTemperature (°C), colorcolor)ax1.plot(data[timestamp], data[feels_like_temperature], labelFeels Like Temperature (°C), colortab:orange, linestyle--)ax1.tick_params(axisy, labelcolorcolor)ax1.legend(locupper left)# 设置y轴的最大刻度数量ax1.yaxis.set_major_locator(MaxNLocator(nbins10)) # 例如最多6个主要刻度# 创建第二个y轴绘制湿度ax2 ax1.twinx()color tab:blueax2.set_ylabel(Humidity (%), colorcolor)ax2.plot(data[timestamp], data[humidity], labelHumidity (%), colorcolor, linestyle:)ax2.tick_params(axisy, labelcolorcolor)# 设置第二个y轴的最大刻度数量如果需要ax2.yaxis.set_major_locator(MaxNLocator(nbins12)) # 例如最多6个主要刻度ax2.legend(locupper right)# 设置标题和格式plt.title(title)plt.xticks(rotation45)plt.tight_layout()plt.savefig(f{title}.png) # 保存图像到文件plt.close() # 关闭图像以释放内存# 绘制近1小时的天气数据
plot_weather_data(df_last_hour, Weather Data in the Last Hour)# 绘制近1天的天气数据
plot_weather_data(df_last_day, Weather Data in the Last Day)# 绘制近1个月的天气数据
plot_weather_data(df_last_month, Weather Data in the Last Month)
生成的图片