Files
2026_DesignAI/officefile/appendix/附录4-网络、网站与在线可视化.md
T
pengxiao 49ceadeb0d fix: 修正附录目录嵌套,移除旧 officefile 附录文件
- 将 officefile/appendix/appendix/ 下的文件提升一级
- 旧 officefile 的 glossary/references/tools.md 移入 Archive

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 14:02:01 +08:00

326 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 附录5:网络、网站与在线可视化
本附录介绍网络基础知识、网站搭建入门,以及在线数据可视化的工具与方法。
## 1 网络基础知识
### 1.1 互联网与Web
互联网(Internet)是由全球计算机互相连接而成的网络。Web(万维网)是运行在互联网上的信息系统,通过浏览器访问网页来获取信息。
**核心概念**
| 概念 | 说明 |
|------|------|
| URL | 统一资源定位符,即网页地址(如 `https://example.com/page` |
| HTTP/HTTPS | 浏览器与服务器之间传输数据的协议,HTTPS 为加密版本 |
| HTML | 网页的骨架,定义页面结构和内容 |
| CSS | 网页的样式,控制颜色、字体、布局等外观 |
| JavaScript | 网页的行为,实现交互功能和动态效果 |
| API | 应用程序接口,程序之间交换数据的标准方式 |
### 1.2 前端与后端
一个完整的Web应用由前端和后端两部分组成:
```
用户浏览器(前端) ←→ 服务器(后端) ←→ 数据库
HTML/CSS/JS Python/Node.js MySQL/PostgreSQL
```
**前端**:用户在浏览器中看到和操作的界面,使用 HTML、CSS、JavaScript 构建。
**后端**:运行在服务器上的程序,处理数据逻辑、存储和检索,可以用 PythonFlask/Django/FastAPI)、Node.js、Java 等实现。
### 1.3 API与数据交互
APIApplication Programming Interface)是程序之间通信的接口。在AI应用中,调用大语言模型、获取在线数据等操作都通过API完成。
**RESTful API 基本概念**
| 方法 | 用途 | 示例 |
|------|------|------|
| GET | 获取数据 | 获取模型列表 |
| POST | 提交数据 | 发送文本让模型生成回复 |
| PUT | 更新数据 | 更新模型参数 |
| DELETE | 删除数据 | 删除一条记录 |
**调用API的Python示例**
```python
import requests
# 调用一个公开API获取数据
response = requests.get("https://api.example.com/models")
data = response.json() # 将返回的JSON解析为Python字典
print(data)
# POST请求示例
payload = {"prompt": "设计一个现代风格的客厅", "model": "stable-diffusion"}
response = requests.post("https://api.example.com/generate", json=payload)
```
### 1.4 JSON数据格式
JSONJavaScript Object Notation)是Web上最常用的数据交换格式,几乎所有API都使用JSON传递数据。
```json
{
"model": "ResNet",
"accuracy": 0.96,
"layers": [64, 128, 256, 512],
"metadata": {
"author": "He et al.",
"year": 2015
}
}
```
Python中读写JSON
```python
import json
# Python字典 → JSON字符串
data = {"name": "Transformer", "year": 2017}
json_str = json.dumps(data, indent=2)
# JSON字符串 → Python字典
parsed = json.loads(json_str)
```
## 2 网站搭建入门
### 2.1 静态网站与动态网站
| 类型 | 说明 | 技术栈 | 适用场景 |
|------|------|--------|---------|
| 静态网站 | 页面内容固定,无需服务器处理 | HTML/CSS/JS | 作品集、项目文档 |
| 动态网站 | 内容根据请求动态生成 | 前端 + 后端 + 数据库 | 在线工具、数据平台 |
### 2.2 静态网站快速搭建
对于设计专业的学生,最实用的方式是使用静态网站生成器搭建项目展示或文档站点。
**MkDocs**:用Markdown编写内容,生成美观的文档网站。
```bash
# 安装
pip install mkdocs mkdocs-material
# 创建项目
mkdocs new my-site
cd my-site
# 本地预览(浏览器访问 http://127.0.0.1:8000
mkdocs serve
# 构建静态文件
mkdocs build
```
**GitHub Pages**:将静态网站免费部署到互联网。
1. 在GitHub上创建仓库
2. 将网站文件推送到仓库
3. 在仓库设置中启用 GitHub Pages
4. 即可通过 `https://username.github.io/repo` 访问
### 2.3 HTML/CSS/JavaScript 速览
#### HTML:页面结构
```html
<!DOCTYPE html>
<html>
<head>
<title>我的设计作品集</title>
</head>
<body>
<h1>设计作品集</h1>
<p>欢迎来到我的作品展示页面</p>
<img src="design.jpg" alt="设计作品">
<a href="https://example.com">了解更多</a>
</body>
</html>
```
#### CSS:页面样式
```css
body {
font-family: "Helvetica", sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
h1 {
color: #2c3e50;
text-align: center;
}
```
#### JavaScript:页面交互
```javascript
// 点击按钮时显示消息
document.getElementById("myButton").addEventListener("click", function() {
alert("按钮被点击了!");
});
```
### 2.4 前端框架简介
对于更复杂的Web应用,可以使用前端框架提升开发效率:
| 框架 | 特点 | 适用场景 |
|------|------|---------|
| Vue.js | 渐进式框架,学习曲线平缓 | 交互式数据展示 |
| React | 组件化开发,生态最丰富 | 复杂单页应用 |
| Streamlit | Python编写Web应用 | AI模型展示、数据分析仪表板 |
**Streamlit 示例**(用Python快速构建AI展示页面):
```python
import streamlit as st
st.title("图像分类演示")
st.write("上传一张图片,AI将识别其中的内容")
uploaded_file = st.file_uploader("选择图片", type=["jpg", "png"])
if uploaded_file:
st.image(uploaded_file, caption="上传的图片")
st.write("分类结果:建筑(置信度 95%")
```
```bash
# 安装并运行
pip install streamlit
streamlit run app.py
```
### 2.5 网站部署方式
| 方式 | 特点 | 费用 |
|------|------|------|
| GitHub Pages | 适合静态网站,免费 | 免费 |
| Vercel / Netlify | 支持前端框架自动部署 | 免费额度 |
| 云服务器(阿里云/腾讯云) | 完全控制,适合动态网站 | 按需付费 |
| Hugging Face Spaces | 适合AI模型演示 | 免费额度 |
## 3 在线数据可视化
### 3.1 为什么需要数据可视化
设计领域的AI研究和实践经常涉及数据展示:训练损失曲线、模型性能对比、空间数据分析结果等。数据可视化将抽象的数字转化为直观的图形,帮助理解和决策。
### 3.2 Python可视化库
#### Matplotlib:基础绑图
```python
import matplotlib.pyplot as plt
# 折线图
epochs = range(1, 11)
train_loss = [0.9, 0.6, 0.4, 0.25, 0.15, 0.1, 0.07, 0.05, 0.04, 0.03]
val_loss = [0.85, 0.65, 0.45, 0.35, 0.28, 0.25, 0.24, 0.23, 0.23, 0.24]
plt.figure(figsize=(8, 5))
plt.plot(epochs, train_loss, 'b-o', label='Train Loss')
plt.plot(epochs, val_loss, 'r-s', label='Val Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Training vs Validation Loss')
plt.legend()
plt.grid(True, alpha=0.3)
plt.savefig('loss_comparison.png', dpi=150, bbox_inches='tight')
plt.show()
```
#### Seaborn:统计可视化
基于Matplotlib,提供更美观的统计图表。
```python
import seaborn as sns
# 热力图:相关性矩阵
import numpy as np
data = np.random.randn(10, 10)
corr = np.corrcoef(data)
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('Feature Correlation Heatmap')
plt.savefig('heatmap.png', dpi=150)
```
#### Plotly:交互式可视化
支持鼠标悬停、缩放、导出等交互操作,适合Web展示。
```python
import plotly.express as px
# 交互式散点图
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", size="petal_length",
title="Iris Dataset Scatter Plot")
fig.write_html("scatter.html") # 导出为网页
fig.show()
```
### 3.3 在线可视化工具
无需编程,通过网页界面即可创建可视化:
| 工具 | 特点 | 网址 |
|------|------|------|
| Observable | JavaScript驱动的交互式笔记本 | [observablehq.com](https://observablehq.com/) |
| Flourish | 拖拽式数据可视化,模板丰富 | [flourish.studio](https://flourish.studio/) |
| Datawrapper | 适合制作新闻级图表 | [datawrapper.de](https://www.datawrapper.de/) |
| Tableau Public | 强大的商业智能可视化 | [public.tableau.com](https://public.tableau.com/) |
| ECharts | 百度开源的交互式图表库 | [echarts.apache.org](https://echarts.apache.org/) |
### 3.4 地理空间可视化
设计领域经常涉及地理和空间数据的可视化:
| 工具 | 特点 | 适用场景 |
|------|------|---------|
| Folium | Python地图可视化库 | 在地图上标注数据点 |
| Kepler.gl | Uber开源的大规模地理数据可视化 | 城市数据分析 |
| Mapbox | 自定义地图样式 | 设计精美的交互地图 |
| QGIS | 开源GIS桌面软件 | 空间分析与制图 |
**Folium 示例**(在地图上标记位置):
```python
import folium
# 创建地图(以某坐标为中心)
m = folium.Map(location=[39.9, 116.4], zoom_start=12)
# 添加标记
folium.Marker(
[39.9, 116.4],
popup="设计学院",
icon=folium.Icon(color="blue", icon="info-sign")
).add_to(m)
# 保存为网页
m.save("map.html")
```
### 3.5 可视化设计原则
| 原则 | 说明 |
|------|------|
| 选择合适的图表类型 | 比较→柱状图,趋势→折线图,占比→饼图,关系→散点图 |
| 保持简洁 | 每张图只传达一个核心信息,避免过度装饰 |
| 使用合理的色彩 | 同类数据用同色系,对比数据用对比色,注意色盲友好 |
| 标注清晰 | 标题、轴标签、图例、数据来源缺一不可 |
| 交互增强 | 在线可视化支持筛选、缩放、悬停查看详情 |