🎯 章节概览
极坐标系(Polar Coordinate System)使用角度θ和半径r来表示点的位置, 特别适合展示周期性、循环性、方向性的数据。本章系统讲解极坐标系下的9种可视化技法, 包括线图、散点图、柱状图、雷达图、等高线,以及用极坐标创作生成艺术。
📈
极坐标线图
玫瑰线、心形线等
🎯
散点与柱状图
角度分布、扇形展示
🕸️
雷达图
多维数据对比
✨
生成艺术
极坐标创意图形
9.1-9.2 极坐标线图
探索玫瑰线、心形线、螺旋线等经典极坐标曲线的数学美
🎯 极坐标曲线实验室(Polar Curve Lab)
通过调整参数,探索经典极坐标曲线的数学美
🔍 曲线洞察
🌹 5瓣玫瑰线
✅ n=5为整数,产生5个对称花瓣
🧪 探索建议
- • 玫瑰线:尝试不同的n值(整数vs小数)
- • 心形线:调整a改变大小
- • 螺旋线:a控制螺旋疏密程度
- • 双纽线:观察∞形状的对称性
🎭 曲线类型
1.0
5.0
5瓣(奇数n)
📐 坐标转换
极坐标: (r, θ)
↓
x = r · cos(θ)
y = r · sin(θ)
📚 极坐标曲线理论
玫瑰线(Rose Curve)
公式:
r = a·sin(nθ) 或 r = a·cos(nθ)- • n为奇数:n个花瓣
- • n为偶数:2n个花瓣
- • n非整数:复杂图案
心形线(Cardioid)
公式:
r = a(1 ± cos(θ))形状像心形,在声学(麦克风指向性)、物理学(重力场线)中有应用
阿基米德螺旋
公式:
r = aθ半径随角度线性增长,相邻螺旋间距恒定为2πa,在自然界(鹦鹉螺壳)中常见
双纽线(Lemniscate)
公式:
r² = a²·cos(2θ)形似∞符号,由伯努利家族研究,在复变函数理论中重要
🎯 学习目标:通过动手调整参数,理解极坐标函数的几何意义。 观察参数变化如何影响曲线形状,建立"公式→图形"的数学直觉。
Python实现
import numpy as np
import matplotlib.pyplot as plt
# 创建极坐标子图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
# 玫瑰线
theta = np.linspace(0, 2*np.pi, 1000)
a, n = 1, 5
r = a * np.sin(n * theta)
ax.plot(theta, r, linewidth=2.5, color='purple')
ax.set_title(f'玫瑰线: r = {a}·sin({n}θ)')
ax.grid(True, alpha=0.3)
plt.show()9.3 极坐标散点图:展示角度-半径分布
在极坐标系中可视化离散数据点
20200
总点数
100
平均半径
71.4
最大半径
120.0
最小半径
20.7
Python代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
theta = np.random.rand(100) * 2 * np.pi
r = np.random.rand(100) * 100 + 20
# 创建极坐标散点图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.scatter(theta, r, c='purple', alpha=0.7, s=30)
ax.set_title('Polar Scatter Plot - random')
plt.show()💡 极坐标散点图的应用:
• 方向性数据:风向、运动轨迹、天线辐射
• 周期性数据:24小时行为模式、季节变化
• 角度分布:地震方位、星体位置、信号相位
• 相比笛卡尔坐标,极坐标更适合展示旋转对称的数据
• 方向性数据:风向、运动轨迹、天线辐射
• 周期性数据:24小时行为模式、季节变化
• 角度分布:地震方位、星体位置、信号相位
• 相比笛卡尔坐标,极坐标更适合展示旋转对称的数据
9.5 极坐标柱状图:环形数据展示
用柱子高度表示不同方向或时间段的数值
最大值
40.0
SW
最小值
15.0
NE
平均值
26.4
总数
8
Python代码:
import matplotlib.pyplot as plt
import numpy as np
# 数据
directions = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']
theta = np.deg2rad([0, 45, 90, 135, 180, 225, 270, 315])
values = [25, 15, 30, 20, 35, 40, 28, 18]
width = np.deg2rad(45)
# 创建极坐标柱状图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
bars = ax.bar(theta, values, width=width, bottom=10, alpha=0.8)
# 颜色映射
for bar, value in zip(bars, values):
bar.set_facecolor(plt.cm.viridis(value / max(values)))
ax.set_title('Polar Bar Chart - wind')
plt.show()💡 极坐标柱状图的应用:
• 气象学:风向风速玫瑰图,展示主导风向
• 时间数据:24小时行为模式、周期性活动
• 方位分析:地震方位、交通流向、天线覆盖
• 角度分布:相位分布、方向统计
• 柱子高度表示数值,角度表示方向或时间
• 气象学:风向风速玫瑰图,展示主导风向
• 时间数据:24小时行为模式、周期性活动
• 方位分析:地震方位、交通流向、天线覆盖
• 角度分布:相位分布、方向统计
• 柱子高度表示数值,角度表示方向或时间
9.6 雷达图:多维数据的星形展示
也称蜘蛛图,用于比较多个维度的能力
能力评分对比:
| 维度 | 候选人 A |
|---|---|
| 编程 | 85 |
| 算法 | 75 |
| 数据库 | 60 |
| 网络 | 70 |
| 设计 | 55 |
| 沟通 | 80 |
| 总分 | 425 |
Python代码:
import matplotlib.pyplot as plt import numpy as np # 维度 categories = ['编程', '算法', '数据库', '网络', '设计', '沟通'] N = len(categories) # 数据 values_A = [85, 75, 60, 70, 55, 80] values_B = [70, 90, 80, 60, 75, 65] # 角度 angles = np.linspace(0, 2*np.pi, N, endpoint=False).tolist() values_A += values_A[:1] # 闭合 values_B += values_B[:1] angles += angles[:1] # 创建雷达图 fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(projection='polar')) # 绘制数据 ax.plot(angles, values_A, 'o-', linewidth=2, label='候选人 A', color='red') ax.fill(angles, values_A, alpha=0.25, color='red') # 设置标签 ax.set_xticks(angles[:-1]) ax.set_xticklabels(categories) ax.set_ylim(0, 100) plt.legend() plt.show()
💡 雷达图的应用:
• 人才评估:多维能力对比、绩效评估
• 产品对比:多指标竞品分析
• 健康数据:体检指标、营养摄入
• 游戏属性:角色能力值、装备属性
• 适合5-10个维度的数据,过多会导致图形拥挤
• 人才评估:多维能力对比、绩效评估
• 产品对比:多指标竞品分析
• 健康数据:体检指标、营养摄入
• 游戏属性:角色能力值、装备属性
• 适合5-10个维度的数据,过多会导致图形拥挤
9.8-9.9 极坐标生成艺术
观察极坐标艺术图案的逐层生成过程,理解对称美学
✨ 极坐标艺术动画器(Polar Art Animator)
观察极坐标艺术图案的逐层生成过程
层数: 0 / 30
🌸 花瓣
速度1x
层数30
🎨 观察要点
- • 注意每层图案如何基于极坐标函数生成
- • 观察颜色渐变(HSL色相循环)
- • 不同模式展示不同的对称性
- • 暂停后可仔细查看中间状态
🎭 艺术模式
📊 生成统计
已绘制层数0
完成度0%
当前色相
🔄 对称性原理
花瓣艺术展示旋转对称性,每个花瓣相隔相等角度分布。
✨ 生成艺术技巧
- • 参数化:通过公式参数控制形状
- • 叠加:多层图案透明叠加
- • 色彩:HSL色相渐变
- • 对称:极坐标天然对称
📚 极坐标生成艺术
🎨
对称美学
极坐标系统天然具有旋转对称性,适合创造规律美的艺术作品
🔢
数学公式
通过调整函数参数(如sin的频率、振幅),产生无限变化
🌈
颜色编码
使用HSL色彩空间,通过色相循环产生渐变效果
🌍 自然界中的极坐标
• 🌻 向日葵种子排列(斐波那契螺旋)
• 🐚 鹦鹉螺壳(对数螺旋)
• ❄️ 雪花晶体(六重对称)
• 🌸 花瓣排列(旋转对称)
• 🕸️ 蜘蛛网(径向+环形结构)
• 🌀 银河系旋臂(螺旋结构)
Python极坐标艺术代码
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'},
figsize=(8, 8), facecolor='black')
# 多层图案叠加
n_layers = 30
for i in range(n_layers):
theta = np.linspace(0, 2*np.pi, 200)
# 花瓣艺术公式
n = 5 + i * 0.3
r = 1 + 0.5 * np.sin(n * theta)
# 颜色渐变
color = plt.cm.hsv(i / n_layers)
ax.plot(theta, r, color=color, linewidth=1.5, alpha=0.6)
ax.set_ylim(0, 2)
ax.axis('off')
plt.tight_layout()📚 章节总结
基础图表
- ✓ 极坐标线图:r = f(θ) 函数曲线
- ✓ 散点图:角度-半径分布
- ✓ 柱状图:环形/角度柱状图
- ✓ 扇形图:分区域展示
高级应用
- ✓ 雷达图:多维数据对比
- ✓ 等高线:二维函数可视化
- ✓ 风向玫瑰:气象数据
- ✓ 时钟图:24小时数据
艺术创作
- ✓ 几何图案:对称美学
- ✓ 螺旋艺术:黄金分割
- ✓ 玫瑰曲线:n叶玫瑰
- ✓ 生成艺术:参数化设计
💡 核心洞察: 极坐标系是圆形、周期性、方向性数据的自然表达方式。相比笛卡尔坐标系, 极坐标能够更直观地展示角度分布、旋转对称、螺旋结构等特征。 在气象学(风向)、生物学(花瓣)、物理学(波动)、艺术设计(对称图案)等领域有广泛应用。
📐极坐标系核心概念
坐标表示
• 极坐标 (r, θ):半径 + 角度
• 笛卡尔坐标 (x, y):横纵坐标
x = r · cos(θ)
y = r · sin(θ)
y = r · sin(θ)
经典曲线
• 圆:r = a
• 玫瑰线:r = a·sin(nθ)
• 心形线:r = a(1 + cos(θ))
• 阿基米德螺旋:r = aθ
Matplotlib实现
import matplotlib.pyplot as plt
import numpy as np
# 创建极坐标子图
fig, ax = plt.subplots(
subplot_kw={'projection': 'polar'}
)
# 绘制玫瑰线
theta = np.linspace(0, 2*np.pi, 1000)
r = np.sin(5*theta)
ax.plot(theta, r)应用场景
• 🌬️ 气象:风向风速玫瑰图
• 🕐 时间:24小时循环数据
• 📡 信号:天线方向图
• 🧭 导航:方位角数据
📊极坐标图表类型
📈
极坐标线图
绘制 r = f(θ) 的函数曲线,展示半径随角度的变化规律。 适合展示周期性、螺旋性、对称性特征。
🎯
极坐标散点图
在极坐标系中绘制离散数据点,颜色/大小可编码第三维信息。 适合展示角度分布和径向分布。
📊
极坐标柱状图
环形柱状图,柱子高度表示数值大小。 适合展示不同方向/时间段的数据对比。
🕸️
雷达图
也称蜘蛛图,用于比较多个维度的数据。 每个维度是一个轴,数值映射为距中心的距离。
🌀
极坐标等高线
在极坐标系中绘制二维函数的等高线。 适合展示具有旋转对称性的函数。
✨
生成艺术
利用极坐标的对称性和周期性,创作几何艺术作品。 通过参数调整产生无限变化。
📂Python代码文件
本章内容对应以下Jupyter Notebook代码文件:
BK_2_Ch09_01.ipynb小节 9.1BK_2_Ch09_02.ipynb小节 9.2BK_2_Ch09_03.ipynb小节 9.3BK_2_Ch09_04.ipynb小节 9.4BK_2_Ch09_05.ipynb小节 9.5BK_2_Ch09_06.ipynb小节 9.6BK_2_Ch09_07.ipynb小节 9.7BK_2_Ch09_08.ipynb小节 9.8BK_2_Ch09_09.ipynb小节 9.9📁 代码位置:
books/Book2_Beauty-of-Data-Visualization/Book2_Ch09_Python_Codes/📖 延伸阅读
数学基础
- • 极坐标与笛卡尔坐标的转换
- • 极坐标下的微积分
- • 经典极坐标曲线(玫瑰线、心形线、螺旋线)
- • 黄金螺旋与斐波那契数列
实际应用
- • 气象学:风向风速玫瑰图
- • 生物学:花瓣排列的数学规律
- • 物理学:天线辐射方向图
- • 设计学:对称图案生成