当前位置:首页>python>Python绘制嵌套极坐标图之径向柱状图+箱线图(附数据和代码)

Python绘制嵌套极坐标图之径向柱状图+箱线图(附数据和代码)

  • 2026-09-02 19:56:41
Python绘制嵌套极坐标图之径向柱状图+箱线图(附数据和代码)

©[悠悠智汇笔记] 版权所有

🙏请尊重劳动成果,守护每一份劳动心血;⚖️未经授权,不得以为任何方式转载、摘编或抄袭。🔄转载合作请后台联系授权,侵权必究。

本期向大家详细介绍一种独特的数据可视化方法——嵌套极坐标复合统计图,特别是其中的径向柱状图与箱线图的结合应用。这种图表通过极坐标系来展示高维离散样本数据,具体来说,径向柱状图部分利用了极坐标系的特点,将每个分类维度均匀分布于圆周上,柱子的高度(或长度)则代表该类别的数值大小。这种方式非常适合用来比较不同类别之间的数值差异。

01

读取数据

1
2
3
4
5
6
7
8
9
10

import pandas as pdimport numpy as np# 读取原始数据df = pd.read_csv("polar_chart_data.csv")# 为中心箱线图准备数据:按组提取所有 value# 结果 box_data 将是一个包含 4 个数组的列表group_names = sorted(df['group'].unique())box_data = [df[df['group'] == g]['value'].values for g in group_names]

02

极坐标计算

计算每个柱子的角度 θ 和宽度 w。为了让不同组之间有间隙,需要在总角度 2π 中预留一些“空位”(PAD)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 设定偏移量,让第一个柱子从正上方开始OFFSET = np.pi / 2PAD = 3  # 组与组之间的空隙大小# 计算总共需要的刻度数 = 样本总数 + 分组间隙angles_n = len(df) + PAD * len(group_names)all_angles = np.linspace(0, 2 * np.pi, num=angles_n, endpoint=False)width = (2 * np.pi) / angles_n# 计算每个样本实际对应的角度索引idxs = []current_pos = 0for g in group_names:    group_size = len(df[df['group'] == g])    idxs += list(range(current_pos + PAD, current_pos + group_size + PAD))    current_pos += group_size + PAD

03

极坐标设置

创建一个极坐标系,并关键性地设置 y 轴范围。通过设置负值的下限(如 −100),可以在圆心创造出一个巨大的“空洞”来放置箱线图。

1
2
3
4
5
6
7
8
9
10
11
12
13

import matplotlib.pyplot as pltfig, ax = plt.subplots(figsize=(10, 10), subplot_kw={"projection": "polar"})ax.set_theta_offset(OFFSET)# 关键:y轴从 -110 开始,0-100 是柱子高度# 这样中心半径为 110 的区域都是空白的ax.set_ylim(-110, 110) # 隐藏极坐标的所有坐标轴和背景线ax.set_frame_on(False)ax.set_xticks([])ax.set_yticks([])

04

绘图

在计算好的角度位置绘制柱子和箱线图。颜色需要根据 group 字段动态匹配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

colors = {"A": "#b0d1a6", "B": "#f5c5a0", "C": "#e7a39a", "D": "#b1a5c9"}# 绘制柱状图bars = ax.bar(all_angles[idxs], df['value'], width=width,               color=[colors[g] for g in df['group']], alpha=0.6)# 在中心位置创建一个新的坐标系# [left, bottom, width, height] 范围是 0 到 1ax_box = ax.inset_axes([0.33, 0.33, 0.34, 0.34])# 在这个直角坐标系里画箱线图bp = ax_box.boxplot(box_data, patch_artist=True)# 隐藏这个嵌套坐标系的背景和边框,使其看起来是透明漂浮的ax_box.set_facecolor('none')ax_box.spines['top'].set_visible(False)ax_box.spines['right'].set_visible(False)

🌿 今日的分享就到这里啦~如果这些内容有为你带来帮助,欢迎轻点右下角的【👍赞】和【👀在看】,也欢迎分享给更多需要的人,感恩~

THE

END

数据和代码怎么获取?

点击关注后,后台回复关键词:

2026_map_013可直接获取完整的示例数据和代码

如有帮助,您的点赞、评论、转发是我持续创作的动力~

猜您喜欢
往期精选▼

1. Python绘制变种饼图之花瓣玫瑰图(附数据和代码)

2. Python绘制像烟花一样的花瓣网络图(附数据和代码)

3. Python绘制主成分分析图(附数据和代码)

4. Python绘制顶刊同款散点拟合回归组合图(附数据和代码)

5. Python绘制绝美分组环形柱状图(附数据和代码)

#数据可视化#科研绘图 #径向柱状图 #Python #Matplotlib

最新文章

随机文章