# 附录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 构建。 **后端**:运行在服务器上的程序,处理数据逻辑、存储和检索,可以用 Python(Flask/Django/FastAPI)、Node.js、Java 等实现。 ### 1.3 API与数据交互 API(Application 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数据格式 JSON(JavaScript 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
欢迎来到我的作品展示页面
了解更多
```
#### 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 可视化设计原则
| 原则 | 说明 |
|------|------|
| 选择合适的图表类型 | 比较→柱状图,趋势→折线图,占比→饼图,关系→散点图 |
| 保持简洁 | 每张图只传达一个核心信息,避免过度装饰 |
| 使用合理的色彩 | 同类数据用同色系,对比数据用对比色,注意色盲友好 |
| 标注清晰 | 标题、轴标签、图例、数据来源缺一不可 |
| 交互增强 | 在线可视化支持筛选、缩放、悬停查看详情 |