软件安装
Miniconda官网
双击执行exe文件后,next。
留意切换一下默认的安装路径。
只需要创建快捷方式,其他环境后续手动再配。
然后finsh完成,安装完成后,会生成一个快捷方式,用conda env list 测试一下,安装成功。
依赖安装
安装web可视化构建依赖包。
pip install streamlit
安装完成后可以执行streamlit hello
测试一下,结果如下:
安装python 连接数据库相关依赖包。
pip install mysql-connector-python
安装绘图相关依赖包
pip install matplotlib
pip install plotly
若安装遭遇失败,可配置一下镜像源进行安装。
#清华镜像源
pip install mysql-connector-python -i https://pypi.tuna.tsinghua.edu.cn/simple
#阿里云镜像源
pip install mysql-connector-python -i https://mirrors.aliyun.com/pypi/simple/
#豆瓣镜像源
pip install mysql-connector-python -i https://pypi.douban.com/simple/
#中科大镜像源
pip install mysql-connector-python -i https://pypi.mirrors.ustc.edu.cn/simple/
代码运行
测试案例代码 test.py
。
import mysql.connector
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import time
# 设置matplotlib中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 页面设置
st.set_page_config(
page_title="传感器数据监控平台",
page_icon="📊",
layout="wide",
initial_sidebar_state="expanded"
)
# 自定义CSS样式
st.markdown("""
<style>
.main-header {
font-size: 2.5rem;
color: #1f77b4;
text-align: center;
margin-bottom: 2rem;
}
.metric-card {
background-color: #f0f2f6;
padding: 15px;
border-radius: 10px;
text-align: center;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
margin-bottom: 10px;
}
.stButton>button {
width: 100%;
}
</style>
""", unsafe_allow_html=True)
# 标题
st.markdown('<h1 class="main-header">📊 传感器数据监控平台</h1>', unsafe_allow_html=True)
# 侧边栏 - 控制面板
with st.sidebar:
st.header("⚙️ 控制面板")
# 数据库连接设置
st.subheader("数据库设置")
host = st.text_input("主机地址", value="192.168.1.119")
port = st.number_input("端口", value=3306, min_value=1, max_value=65535)
user = st.text_input("用户名", value="root")
password = st.text_input("密码", value="123456", type="password")
database = st.text_input("数据库", value="low-code")
# 时间范围筛选
st.subheader("时间范围筛选")
time_range = st.selectbox(
"选择时间范围",
["最近1小时", "最近6小时", "最近24小时", "最近7天", "自定义", "全部数据"]
)
if time_range == "自定义":
col1, col2 = st.columns(2)
with col1:
start_date = st.date_input("开始日期", value=datetime.now() - timedelta(days=1))
with col2:
end_date = st.date_input("结束日期", value=datetime.now())
else:
start_date = end_date = None
# 图表设置
st.subheader("图表设置")
chart_type = st.selectbox(
"图表类型",
["折线图", "柱状图", "散点图"]
)
color_theme = st.selectbox(
"颜色主题",
["默认", "蓝色系", "红色系", "绿色系"]
)
show_raw_data = st.checkbox("显示原始数据", value=True)
auto_refresh = st.checkbox("自动刷新", value=False