================================================================================ 趋势预测分析工具 ChartAnalysis - 使用教学与部署说明 ================================================================================ 目录 -------------------------------------------------------------------------------- 一、程序简介与功能总览 二、运行环境要求 三、部署文件清单 四、快速上手(5 步出图) 五、界面布局说明 六、详细操作教学 七、config.ini 配置说明 八、测试模式(开发用) 九、常见问题 FAQ 十、源码与重新编译 ================================================================================ 一、程序简介与功能总览 ================================================================================ ChartAnalysis.exe 是一个连接 MySQL 数据库的趋势分析与预测绘图工具。 单文件绿色程序(C# WinForms 编写),无需安装、无需任何运行库。 主要功能: -------------------------------------------------------------------------------- 1. 数据库连接: 连接任意 MySQL 5.5~8.x 服务器,浏览数据库/表/列结构。 2. 灵活查询: X 轴单选、Y 轴多选、过滤规则、排序方向、条数/偏移/起点控制。 3. 智能绘图: 自动识别时间(X)轴(23 种时间格式),支持数值轴/文本轴。 4. 运算曲线: 13 种数学运算(含 6 种 AI 算法),可叠加在原始曲线上。 5. 图表交互: 十字准线、点击数据点查看数值、图例固定显示、图表设置。 6. 图片导出: 一键保存 PNG / JPG / BMP 图片。 7. 窗口自适应: 左侧配置面板可拖拽宽度,控件随宽度自动伸缩布局。 ================================================================================ 二、运行环境要求 ================================================================================ 1. 操作系统: Windows 7 SP1 / 8 / 8.1 / 10 / 11(32/64 位均可)。 - 注意: Windows 7 必须为 SP1 或以上版本。 2. .NET Framework: 4.6.2 或更高(推荐 4.8)。 - Win10 / 11 系统自带 4.8,开箱即用,无需安装。 - Win7 SP1 / 8 / 8.1 若缺失,用 Start.bat 启动会自动下载安装。 3. 数据库: MySQL 5.5 ~ 8.x(本机或远程服务器均可)。 - MySQL 连接驱动已内嵌进 exe,客户端无需安装任何驱动或 ODBC。 4. 无需安装: 不依赖 VC++ 运行库、Java、Python 等其他任何组件。 ================================================================================ 三、部署文件清单 ================================================================================ [必需] ChartAnalysis.exe 主程序(单文件,约 1.5MB) [必需] config.ini 数据库连接配置(与 exe 同目录) [可选] Start.bat 引导启动器: 自动检测并安装 .NET Framework, 解决"没有 .NET 环境"电脑无法运行的问题。 Win7 SP1 ~ Win11 全兼容。 [可选] README.txt 本说明文档 发布时只需 exe + config.ini 两个文件即可运行。 ================================================================================ 四、快速上手(5 步出图) ================================================================================ 第 1 步: 双击 ChartAnalysis.exe(或用 Start.bat)启动程序。 第 2 步: 左侧"服务器连接"区填好 主机/端口/用户名/密码,点击"连 接"。 (config.ini 已配置时自动填入,可直接连接) 第 3 步: 连接后自动加载数据库列表,选中数据库后自动加载表列表; 再选"存储表"→ 自动加载全部列;指定"横坐标"(X 轴); 按住 Ctrl 键多选"纵坐标"(Y 轴曲线)。 第 4 步: 按需设置过滤规则 / 排序 / 条数等,点击"绘制曲线"。 第 5 步: 等待查询完成,图表自动渲染;可继续叠加运算曲线或保存图片。 ================================================================================ 五、界面布局说明 ================================================================================ ┌────────────┬──────────────────────────────────────────────┐ │ 折叠 | 钉住 │ 标题栏 (表名 曲线图) │ │ ────────── │ 图例条 (色块+曲线名, 固定在标题下方) │ │ 服务器连接 │ 工具栏: 曲线 | 运算 | 参数 | 生成/清除/图例/设置/十字线 │ │ 排序规则 │ │ │ 存储表坐标 │ 图表绘图区 │ │ 过滤规则 │ (十字线/点击数据点/缩放自由) │ │ 绘制/保存 │ │ └────────────┴──────────────────────────────────────────────┘ 左侧配置面板: 可拖动中间分隔条改变宽度 (380~800px)。 - 面板宽度 >= 380px 时,控件宽度随面板自适应伸缩; - 面板拖到 380px 以下时,控件保持最小布局,右侧开始被遮蔽 (出现横向滚动条)。 折叠按钮: 隐藏左侧面板,腾出整个窗口给图表;点"展开配置"恢复。 钉住按钮: 锁定左侧面板宽度,拖动分隔条不再生效。 ================================================================================ 六、详细操作教学 ================================================================================ 6.1 服务器连接 -------------------------------------------------------------------------------- - 主机地址 / 端口 / 用户名 / 密码: 直接填写;密码框为掩码输入。 - DB 下拉框: 支持输入过滤,回车或选中即加载该库的表。 - 点"连 接": 连接服务器并刷新数据库列表(自动选中 config.ini 中的库)。 - 连接信息会自动保存到 config.ini,下次启动自动填入。 6.2 排序规则 -------------------------------------------------------------------------------- - 方向: 正序(最早在前) / 倒序(最新在前),默认正序。 * 注意: 无论哪种方向,图表 X 轴始终按时间(数值)从左到右递增显示。 倒序模式 = 只取最新的 N 条数据来画图。 - 条数: 查询多少行,默认 2000(0 = 不限制)。 - 偏移: 跳过前 N 行(从最早/最新一侧开始跳,跟随排序方向)。 - 起点: 从最新数据往回数 N 条作为查询起点,再取"条数"行。 例: 条数=2000、起点=5000 → 取倒数第 5000 条往前共 2000 条数据。 6.3 存储表与坐标轴 -------------------------------------------------------------------------------- - 存储表: 选择要查询的表,自动列出所有列。 - 横坐标: 单选 X 轴列(时间列 / 数值列 / 文本列均可自动识别)。 - 纵坐标: 按住 Ctrl 可多选,画多条曲线。 提示: 下方小字"提示: 按住 Ctrl 键可多选纵坐标"。 6.4 过滤规则(多行按 AND/OR 连接) -------------------------------------------------------------------------------- 每行规则由 4 列组成: 列 | 操作符 | 值 | 逻辑。 - 操作符: = != > >= < <= LIKE BETWEEN IS NULL IS NOT NULL - 值: 普通条件直接填值;BETWEEN 用逗号分隔两个值,如 10,20; LIKE 可直接写 % 通配符,如 'AB%' 可填 AB%。 - 逻辑: 该行与下一行之间的连接方式,AND 或 OR,默认 AND。 例: 列=类型 = 设备1 AND 列=温度 >= 100 OR 列=压力 <= 5 等价 SQL: WHERE 类型='设备1' AND 温度>=100 OR 压力<=5 - 按钮: "+ 添加规则" 加一行;"- 删除" 删选中行;"清空" 删除全部。 - 注意: 多行混用 AND/OR 时按行顺序连接,建议用括号语义自行组织顺序。 6.5 绘制曲线与保存图片 -------------------------------------------------------------------------------- - "绘制曲线": 后台线程查询并渲染,期间按钮禁用,完成后状态栏提示。 - "保存图片": 弹出保存对话框,可选 PNG / JPG / BMP 格式。 6.6 图表交互 -------------------------------------------------------------------------------- (1) 十字准线: 鼠标移入绘图区,显示跟随鼠标的灰色虚线十字架; 离开绘图区自动消失。工具栏"隐藏十字线/显示十字线"可开关。 (2) 点击数据点: 鼠标左键点击曲线上的数据点,弹出浮动信息窗,显示: 曲线名 / X 值 / Y 值 / 数据序号。 时间 X 轴自动格式化为 yyyy-MM-dd HH:mm:ss。 点击图表空白处或切换窗口自动关闭。 (3) 图例: 固定在标题下方,色块+曲线名,自动换行、高度自适应。 工具栏"隐藏图例/显示图例"可开关。 (4) 工具栏: - 曲线: 选择目标曲线(仅"线性变换/二次变换"需要指定)。 - 运算: 选择运算类型(详见 6.7)。 - 参数: 输入所选运算的参数(窗口/阶数/迭代/α/a,b)。 - "生成运算曲线": 对已绘制曲线执行运算并叠加显示。 - "清除运算": 移除全部运算曲线。 - "图表设置": 打开设置对话框(详见 6.8)。 6.7 运算功能详解(13 种,按拼音排序) -------------------------------------------------------------------------------- 运算列表(默认选中"平滑曲线"): 名称 参数 说明 ───────────────────────────────────────────────────────────── 贝叶斯回归 (AI) α:1 带正则的贝叶斯线性回归,α 越大曲线越平缓 常用对数 (log10) - 对 Y 值取以 10 为底的对数(需 Y>0) 对数 (ln) - 对 Y 值取自然对数(需 Y>0) 多项式拟合 (Polyfit) (AI) 阶数:3 最小二乘多项式拟合,阶数 1~10 二次变换 (a*y²+b) (AI) a,b:1,0 对指定曲线做二次变换 积分 (累积) - 梯形法累积积分(∫ydx) 开方 (sqrt) - 对 Y 值开平方(需 Y>=0) 平滑曲线 (滑动平均) 窗口:5 滑动平均滤波,窗口 3~101(奇数值) 梯度下降 (AI) 迭代:200 数据归一化后用梯度下降迭代拟合回归线 微分 (差分) - 一阶差分 dy/dx 线性回归 (AI) - 最小二乘线性回归直线 线性变换 (a*y+b) (AI) a,b:1,0 对指定曲线做线性变换 指数 (exp) - 对 Y 值取指数 - 使用步骤: 先"绘制曲线"→ 选择运算与参数 → "生成运算曲线"。 - "线性变换/二次变换"需先在"曲线"下拉框指定目标曲线(变换只作用于 该曲线,其余运算对全部曲线各生成一条结果)。 - (AI) 标记: 表示智能拟合/迭代类算法。 6.8 图表设置对话框 -------------------------------------------------------------------------------- "常规"页: - 标题 / 横轴名称 / 纵轴名称(修改立即应用于图表)。 - 图例位置: 固定于标题下方(不可调)。 - 横轴/纵轴网格: 显示开关 + 网格间距(留空 = 自动)。 - 次网格: 加密网格线开关 + 细分数(默认 4 等分)。 "坐标轴"页: - 横轴/纵轴最小/最大值: 留空 = 自动。 - 横轴/纵轴对数刻度 (Log): 要求数据均为正值。 "曲线样式"页: - 逐条曲线设置: 颜色 / 线宽(1~8) / 线型(实线/虚线/点线/点划线) / 标记(无/圆点/方块/三角/菱形)。 - 点"应用"生效并关闭;"取消"放弃修改。 ================================================================================ 七、config.ini 配置说明 ================================================================================ [mysql] host = 127.0.0.1 数据库服务器地址 (远程填 IP 或域名) port = 3306 端口 user = root 用户名 password = 密码 database = 数据库名 charset = utf8mb4 字符集 - 也可在程序界面的"连接"区直接填写,点"连接"后自动保存到本文件。 - 首次运行没有 config.ini 时程序按默认值 (127.0.0.1/3306/root/空) 启动。 ================================================================================ 八、测试模式(开发用) ================================================================================ ChartAnalysis.exe --selftest 自检: 连接数据库、枚举表/列、查询数据, 结果写入 selftest_result.txt ChartAnalysis.exe --drawtest 绘图测试: 用数据库中第一张表画 1 条曲线, 导出 drawtest.png 验证图表渲染 ================================================================================ 九、常见问题 FAQ ================================================================================ Q1. 双击 exe 无反应/报错提示缺少 .NET Framework? A1. 用 Start.bat 启动会自动安装 .NET 4.8;或按第二节手动安装。 Q2. 报错"无法连接数据库"? A2. 检查 config.ini 或界面中填写的地址/端口/账号/密码/数据库名是否正确, 并确认服务器防火墙放行了对应端口(默认 3306)。 Q3. Win7 安装 .NET 4.8 失败? A3. 确认系统是 Win7 SP1,且已安装最新 Windows Update 补丁。 .NET 4.8 官方最低支持 Win7 SP1。 Q4. 查询很慢或图表点很多很卡? A4. 在"条数"里减小查询行数(如 500/1000);或配合"起点"只看最近一段。 Q5. 为什么方向选"倒序"后图表还是从左到右时间递增? A5. 这是正常设计: 图表 X 轴始终按时间递增显示,"倒序"仅表示取最新的 数据段来画图(等价于只查看最近 N 条)。 Q6. 对数刻度 / 对数运算为什么有的点不显示? A6. 对数要求数值为正;sqrt 要求非负。非法点会被自动跳过,曲线相应断开。 Q7. 左侧面板变窄后控件看不全? A7. 面板小于 380px 时控件保持最小布局并出现横向滚动条,属设计行为; 拖宽面板即可完整显示。 ================================================================================ 十、源码与重新编译(开发用) ================================================================================ Program.cs 主程序源码(C#,单文件,含全部窗体逻辑) tools\ref\ .NET 4.6.2 参考程序集(编译时引用) lib\ 依赖 DLL(编译时内嵌进 exe) build.bat 一键重新编译 ChartAnalysis.exe(本机需装 .NET 4.x) config.ini 数据库连接配置 编译命令: 双击 build.bat,或命令行执行: build.bat 产物: ChartAnalysis.exe(内嵌 MySqlConnector 等 10 个 DLL 及程序图标) 依赖 DLL 明细(已内嵌,仅供说明): MySqlConnector.dll、Microsoft.Bcl.AsyncInterfaces.dll、 Microsoft.Extensions.DependencyInjection.Abstractions.dll、 Microsoft.Extensions.Logging.Abstractions.dll、System.Buffers.dll、 System.Diagnostics.DiagnosticSource.dll、System.Memory.dll、 System.Numerics.Vectors.dll、System.Runtime.CompilerServices.Unsafe.dll、 System.Threading.Tasks.Extensions.dll ================================================================================