sxper 2023-02-19 18:19 采纳率: 33.3%
浏览 25
已结题

python 使用plotly数据库可视化数据太多

数据太多了1秒一条。一天好9w数据。数据用图画出出来的折线图,就是一块柱状图。怎么才能减少间隔比如 数据库查询的时候间隔10条取一条。或者plotly画图的时候间隔10条取一条


import os
import numpy as np
import pandas as pd
import sqlite3
import plotly as py
import plotly.graph_objs as go
#import plotly.expression as px
from plotly import tools
import datetime

import warnings
warnings.filterwarnings("ignore")
# 使用8266 dht11做到温湿度采集。上传到腾讯我的vos服务器,自己做的http接受字符串程序
# 使用8266 dht11做到温湿度采集。上传到腾讯我的vos服务器,自己做的http接受字符串程序
#建立数据库连接
#conn = pymysql.connect("192.168.6.128","root","root","test_db",charset="utf8")
con=sqlite3.connect("220604_temp_dht11.db")
print("连接成功")
#读取数据库表数据
cursor = con.cursor()
#dataCopy = cursor.execute("select * from t1 where sdate>'2022-05-04' order by id desc   ")
#dataCopy = cursor.execute("select * from t1  order by id desc Limit 15000  ")
dataCopy = cursor.execute("select * from t1  order by id desc  ")
#data = pd.read_sql("select * from t1 Limit 100 order by id desc ",con=con)
values = dataCopy.fetchall()
#for row in values:
# 使用Pandas的DataFrame来处理每一行要比使用一个包含元组的元组方便
 # 下面的Python代码片段将所有行转化为DataFrame实例
df = pd.DataFrame([[ij for ij in i] for i in values])
# print(df) 
# 步骤一
df.rename(columns={0: 'id', 1: 'tt', 2: 'hh', 4: 'sdate'}, inplace=True)
#xx=datetime.datetime.strftime(df["sdate"],'%Y-%m-%d')
trace0 = go.Scatter(x=df["sdate"],y=df["tt"],name="温度")
trace1 = go.Scatter(x=df["sdate"],y=df["hh"],name="湿度")
# 步骤二
data = [trace0,trace1]
# 步骤三
fig = go.Figure(data)
# 步骤四
fig.update_layout(


    xaxis_title="年份",
    yaxis_title="温湿度"
)
# 步骤五
output_path = "C:/bar.html"
py.offline.plot(fig, filename=output_path)
#fig.show()

  • 写回答

3条回答 默认 最新

  • CodeBytes 2023-02-19 18:34
    关注

    该回答引用ChatGPT
    参考下面代码

    import os
    import numpy as np
    import pandas as pd
    import sqlite3
    import plotly.graph_objs as go
    from plotly import tools
    import datetime
    
    import warnings
    warnings.filterwarnings("ignore")
    
    # 建立数据库连接
    con = sqlite3.connect("220604_temp_dht11.db")
    print("连接成功")
    
    # 读取数据库表数据
    cursor = con.cursor()
    dataCopy = cursor.execute("select * from t1 order by id desc")
    
    # 将数据存入Pandas DataFrame中
    df = pd.DataFrame([[ij for ij in i] for i in dataCopy.fetchall()])
    df.rename(columns={0: 'id', 1: 'tt', 2: 'hh', 4: 'sdate'}, inplace=True)
    
    # 取每隔10个数据只取1个
    df = df.iloc[::10, :]
    
    # 创建Trace
    trace0 = go.Scatter(x=df["sdate"], y=df["tt"], name="温度", mode='lines+markers')
    trace1 = go.Scatter(x=df["sdate"], y=df["hh"], name="湿度", mode='lines+markers')
    
    # 创建Data和Layout
    data = [trace0, trace1]
    layout = go.Layout(xaxis_title="年份", yaxis_title="温湿度")
    
    # 创建Figure
    fig = go.Figure(data, layout)
    
    # 输出图形
    output_path = "C:/bar.html"
    fig.write_html(output_path)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 2月19日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来