← 返回Book 2目录
第09章

极坐标系

Polar Coordinate System · 圆形数据的自然表达

从线图到艺术创作,探索极坐标的9种可视化技法

🎯 章节概览

极坐标系(Polar Coordinate System)使用角度θ和半径r来表示点的位置, 特别适合展示周期性、循环性、方向性的数据。本章系统讲解极坐标系下的9种可视化技法, 包括线图、散点图、柱状图、雷达图、等高线,以及用极坐标创作生成艺术。

📈
极坐标线图
玫瑰线、心形线等
🎯
散点与柱状图
角度分布、扇形展示
🕸️
雷达图
多维数据对比
✨
生成艺术
极坐标创意图形

9.1-9.2 极坐标线图

探索玫瑰线、心形线、螺旋线等经典极坐标曲线的数学美

🎯 极坐标曲线实验室(Polar Curve Lab)

通过调整参数,探索经典极坐标曲线的数学美

r = 1 · sin(5θ)

🔍 曲线洞察

🌹 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
0°90°180°270°r=40r=80r=120
总点数
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小时行为模式、季节变化
• 角度分布:地震方位、星体位置、信号相位
• 相比笛卡尔坐标,极坐标更适合展示旋转对称的数据

9.5 极坐标柱状图:环形数据展示

用柱子高度表示不同方向或时间段的数值

20406080NNEESESSWWNW风
最大值
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小时行为模式、周期性活动
• 方位分析:地震方位、交通流向、天线覆盖
• 角度分布:相位分布、方向统计
• 柱子高度表示数值,角度表示方向或时间

9.6 雷达图:多维数据的星形展示

也称蜘蛛图,用于比较多个维度的能力

编程算法数据库网络设计沟通255075100候选人 A
能力评分对比:
维度候选人 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个维度的数据,过多会导致图形拥挤

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(θ)

经典曲线

• 圆: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.1
BK_2_Ch09_02.ipynb小节 9.2
BK_2_Ch09_03.ipynb小节 9.3
BK_2_Ch09_04.ipynb小节 9.4
BK_2_Ch09_05.ipynb小节 9.5
BK_2_Ch09_06.ipynb小节 9.6
BK_2_Ch09_07.ipynb小节 9.7
BK_2_Ch09_08.ipynb小节 9.8
BK_2_Ch09_09.ipynb小节 9.9
📁 代码位置:books/Book2_Beauty-of-Data-Visualization/Book2_Ch09_Python_Codes/

📖 延伸阅读

数学基础

  • • 极坐标与笛卡尔坐标的转换
  • • 极坐标下的微积分
  • • 经典极坐标曲线(玫瑰线、心形线、螺旋线)
  • • 黄金螺旋与斐波那契数列

实际应用

  • • 气象学:风向风速玫瑰图
  • • 生物学:花瓣排列的数学规律
  • • 物理学:天线辐射方向图
  • • 设计学:对称图案生成