# 数据可视化技术 **Repository Path**: yan_jidao/data-visualization-technology ## Basic Information - **Project Name**: 数据可视化技术 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-08 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据可视化技术项目 一个完整的 **Python 数据可视化技术教学项目**,涵盖从基础语法到高级图表绘制的全面内容,包含 90+ 个代码示例文件,适合作为学习参考和项目实践。 ## 项目结构 ``` 数据可视化技术/ ├── 0_代码示例/ # 核心综合示例 ├── 1-第一个 Python 程序/ # Python 入门程序 ├── 2-数据读写/ # 多格式数据读写操作 │ ├── 1-txt/ # 文本文件操作 │ ├── 2-csv/ # CSV 文件处理 │ ├── 3-json/ # JSON 数据操作 │ ├── 4-xlsx/ # Excel 文件操作 │ ├── 5-xml/ # XML 文件操作 │ ├── 6-api/ # API 数据获取 │ ├── 7-sql/ # 数据库操作 │ └── 8-服务器/ # Flask 数据读写展示服务 ├── 3_基本图形的绘制/ # Matplotlib 基础图表 │ ├── 1_柱状图/ │ ├── 2_散点图/ │ └── 3_饼图/ ├── 4_子图绘制/ # 高级子图布局 ├── 5_动态图表/ # 动画图表 ├── 6_3D图表/ # 三维可视化 ├── 7_词云图/ # 词云可视化 ├── 8_实训代码/ # 综合实训项目 ├── 9_练习代码/ # 练习作品 ├── 10-服务器/ # Flask Web 数据展示服务 ├── 11-数据大屏/ # 数据大屏项目 └── 12-期中考试/ # 期中考试试题 ``` ## 核心功能 ### 1. 基础图表绘制 - **柱状图/条形图**:垂直柱状图、水平条形图、直方图 - **散点图/气泡图**:单变量散点图、多变量气泡图、鸢尾花数据集可视化 - **饼图**:基础饼图、环形饼图、多重嵌套饼图 - **折线图**:基础折线图、函数曲线 ### 2. 高级图表 - **子图布局**:`plt.subplots()`、`GridSpec` 网格布局、嵌入式子图、自定义子图 - **3D 图表**:3D 表面图、3D 散点图、3D 线框图、3D 螺旋线、3D 柱状图 - **词云图**:基础词云、jieba 分词版词云、蒙版词云(自定义形状) - **动态图表**:`FuncAnimation` 动态更新、`ArtistAnimation` 预生成帧、音频同步动态图 ### 3. 文件操作与数据处理 - **文本文件**:TXT 文件读取、文本提取与高亮显示 - **CSV 文件**:数据统计、排序、合并、筛选 - **JSON 数据**:创建、保存、读取 JSON 格式数据 - **Excel 文件**:多工作表读取、数据统计、表合并(pandas) - **XML 文件**:XML 解析、节点提取、节点添加与保存 - **数据库**:MySQL 连接查询、SQLite 数据库操作 - **API 接口**:分页请求、进度条显示、数据本地保存 ### 4. Web 数据展示服务 - **Flask 应用**:提供 7 个数据页面 + 7 个 API 接口 - **Docker 部署**:完整的 Dockerfile 和 docker-compose.yml - **数据源支持**:CSV、Excel、SQLite 多数据源 - **分页查询**:支持大数据集的分页展示 ## 技术栈 | 类别 | 使用的库/工具 | |------|--------------| | **核心可视化** | matplotlib (plt, animation, mplot3d, gridspec) | | **数值计算** | numpy | | **数据处理** | pandas | | **词云生成** | wordcloud, jieba, PIL (Pillow) | | **图表库** | pyecharts (ECharts Python 封装) | | **Web 框架** | Flask | | **数据库** | pymysql, sqlite3 | | **网络请求** | requests | | **音频处理** | librosa, pygame | | **进度条** | tqdm | | **部署工具** | Docker, Docker Compose | ## 安装依赖 ### 基础依赖 ```bash pip install matplotlib numpy pandas ``` ### 完整依赖 ```bash pip install matplotlib numpy pandas wordcloud jieba Pillow requests tqdm ``` ### 数据大屏依赖 ```bash pip install flask pyecharts ``` ### 音频动态图依赖(可选) ```bash pip install librosa pygame ``` ### Web 服务依赖 ```bash cd 10-服务器 pip install flask pandas openpyxl ``` ## 快速开始 ### 绘制基础图表 ```bash cd 3_基本图形的绘制/1_柱状图 python 1-柱形图.py ``` ### 生成词云图 ```bash cd 7_词云图 python 基础词云图.py ``` ### 运行动态图表 ```bash cd 5_动态图表 python 动态图示例.py ``` ### 启动 Web 服务 ```bash cd 10-服务器 python app.py # 访问 http://localhost:5001 ``` ### 启动数据大屏 ```bash cd 11-数据大屏 python app.py # 访问 http://localhost:5001 ``` ### Docker 部署 Web 服务 ```bash cd 10-服务器 ./deploy.sh # 或使用 docker-compose docker-compose up -d ``` ## 代码示例详解 ### 0_代码示例 综合性的核心示例代码,快速了解项目能力: - `基本图表的绘制.py`:2x2 子图布局(散点图、柱状图、折线图、饼图) - `3D图示例.py`:3D 表面图绘制 sin(x)*cos(y) 二元函数 - `词云图.py`:读取本地文本,jieba 分词后生成词云 - `动态图表示例.py`:使用 FuncAnimation 创建动态柱状图 ### 1-第一个 Python 程序 Python 入门级示例,展示基础的 Matplotlib 图表绘制: - `demo.py`:2x2 子图布局综合示例(散点图、柱状图、折线图、饼图) ### 2-数据读写 涵盖 8 种数据格式的操作示例,每个子目录按任务编号组织: - **1-txt/**:文本读取、提取、高亮显示(任务 1-3) - **2-csv/**:食堂消费统计、排序与筛选(任务 4-6) - **3-json/**:学生数据字典保存与读取(任务 7-9) - **4-xlsx/**:销售数据、员工信息多表操作(任务 10-12) - **5-xml/**:图书信息 XML 解析与修改(任务 15-17) - **6-api/**:电影、招聘、电子产品 API 数据获取(任务 18-20) - **7-sql/**:MySQL/SQLite 数据库查询(游戏、小红书、天猫等,任务 21-25) - **8-服务器/**:Flask 数据读写展示服务 ### 3_基本图形的绘制 Matplotlib 基础图表教学代码: - **柱状图**:垂直/水平条形图、直方图(正态分布) - **散点图**:天气温度对比、气泡图、鸢尾花数据集 - **饼图**:销售占比、环形饼图、多重饼图 ### 4_子图绘制 高级子图布局技术: - `plt.subplots()` 标准网格布局 - `GridSpec` 跨区域复杂布局 - `add_axes()` 嵌入式子图 - `add_subplot()` 自定义合并布局 ### 5_动态图表 动画图表实现: - `FuncAnimation`:实时更新数据动画 - `ArtistAnimation`:预生成帧动画 - 音频同步动态图:librosa 提取音高特征 + pygame 播放 ### 6_3D图表 三维可视化技术: - 3D 表面图(带等高线投影) - 3D 散点图(随机颜色与大小) - 3D 线框图 - 3D 螺旋线(参数方程) - 3D 柱状图(双正态分布) ### 7_词云图 词云可视化方法: - 基础词云(直接生成) - 分词版词云(jieba 分词 + 词频统计) - 蒙版词云(自定义形状,如心形轮廓) ### 8_实训代码 综合实训项目: - 基础图表绘制(折线图、柱状图、散点图) - 动态分组柱状图(多班级成绩展示) - 3D 散点图 - 词云图(校歌歌词) ### 9_练习代码 学习者练习作品: - 环形饼图(销售占比) - 2x2 子图组合 - 基础词云图 - add_subplot 布局练习 ### 10-服务器 Flask Web 数据展示服务: - **7 个数据页面**:电子产品、电影、招聘、游戏、小红书、天猫、用户行为 - **7 个 API 接口**:支持分页查询 - **Docker 部署**:完整的容器化部署方案 - **数据迁移**:MySQL 到 SQLite 迁移脚本 ### 11-数据大屏 Flask + Pyecharts 数据大屏,LPL 比赛数据可视化: - **mock_data.py**:生成 LPL 2020 夏季赛模拟数据(12支战队、60名选手、132场比赛) - **analysis.py**:数据聚合分析,产出战队排行、选手KDA、英雄胜率等图表数据 - **app.py**:Flask 服务,5 个 Pyecharts 图表 + 3 个数据表格 + 6 个 KPI 指标卡 - **templates/dashboard.html**:暗色主题数据大屏页面,三栏响应式布局 ### 12-期中考试 期中考试试题: - 案例分析题(含编程实现) - 编程题 ## 数据来源 1. **API 接口**:`https://pugfyuxkcuzf.sealoshzh.site/` 下的 movies/、electronics/、jobs/ 端点 2. **本地文件**:CSV、Excel、JSON、XML、TXT 等多种格式文件 3. **MySQL 远程数据库**:dbconn.sealoshzh.site:48994 4. **SQLite 本地数据库**:datashow.db(包含 games、red_book、tmall、user_behavior 四张表) 5. **内置/随机生成数据**:numpy 生成的正态分布、sin/cos 函数值等 ## 适用场景 - **数据可视化学习**:从基础到高级图表的系统学习 - **教学参考**:适合作为 Python 数据可视化课程的教学材料 - **项目实践**:真实数据源的处理与可视化 - **Web 开发**:Flask + Docker 数据展示服务部署 - **数据分析**:多数据源的数据提取与分析 ## 注意事项 1. **中文字体**:部分词云图代码使用 `simhei.ttf` 字体,请确保系统已安装该字体 2. **数据库连接**:SQL 相关示例需要修改数据库连接信息(主机、端口、用户名、密码) 3. **API 接口**:API 数据获取代码依赖于指定的 API 服务是否可用 4. **音频动态图**:需要准备本地音乐文件才能运行音乐动态图示例 5. **Docker 部署**:`10-服务器` 目录的 Docker 部署使用了阿里云和清华镜像源,加速下载 6. **端口变更**:10-服务器 使用端口 5001(非 5000) ## Web 服务部署 详细部署文档请查看:[10-服务器/DEPLOY.md](10-服务器/DEPLOY.md) ### 快速部署 ```bash cd 10-服务器 # 方式一:使用部署脚本 ./deploy.sh # 方式二:使用 docker-compose docker-compose up -d # 访问服务 # http://localhost:5001 ``` ### API 接口列表 | 端点 | 数据源 | 说明 | |------|--------|------| | `/api/electronics` | CSV | 电子产品销售数据,分页 | | `/api/movies` | Excel | 豆瓣电影数据,分页 | | `/api/jobs` | Excel | 2024 招聘信息,分页 | | `/api/games` | SQLite | 游戏销售数据,分页 | | `/api/red_book` | SQLite | 小红书用户数据,分页 | | `/api/tmall` | SQLite | 天猫订单数据,分页 | | `/api/user_behavior` | SQLite | 用户行为数据,分页 | ## 许可证 本项目仅供学习和教学使用。 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 如有问题或建议,请通过 Gitee Issues 提交。 --- 如果这个项目对你有帮助,请给个 Star!