马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
想象一下,你正站在一个圆形广场的中心,附近匀称分列着12根高度差别的灯柱,这就是径向条形图带给我们的视觉体验。
在数据可视化范畴,我们常常满意于传统的直角坐标系条形图,但当数据具有周期性或比力性时,径向条形图和圆形条形图为我们打开了新的大概性。
1. 计划原理
这两种图表把传统的笛卡尔坐标系换成极坐标系:角度表现种别,半径或角度长度表现数值。
1.1. 径向条形图
径向条形图本质上是将传统条形图的直角坐标系转换为极坐标系。
在极坐标系中,每个数据点不再由(x, y)定位,而是由(角度, 半径)确定,条形的高度(或长度)由半径值表现,而条形的分列则沿着圆周方向。
计划灵感:犹如钟表的指针或雷达的扫描线,径向条形图鉴戒了自然界和人工成品中常见的圆形结构,使用了人类对角度和对称性的自然感知本领。
1.2. 圆形条形图
圆形条形图是径向条形图的一种特殊情势,它固定了出发点和尽头,使全部条形都在同一圆周上开始,只在半径方向上延伸。
这种计划办理了完全径向结构大概导致的数据比力困难标题,由于全部条形的基准线是划一的。
计划比喻:想象一组跳高活动员,他们都从同一高度起跳,只是跳跃的高度差别——圆形条形图就是如许公平的"竞技场"。
2. 应用示例
下面通过示例来演示这两种图在现实场景中的应用。
2.1. 径向条形图
- # --- 1. 构造测试数据 ---
- # 假设我们想比较一年中每个月的平均降水量
- 月份 = [
- "一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月",
- ]
- # 生成模拟的降水量数据 (单位: mm)
- np.random.seed(42) # 为了结果可复现
- 降水量 = np.random.uniform(30, 150, size=len(月份)) # 随机生成30-150mm的数据
- # --- 2. 创建图形 ---
- fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 7), facecolor="white")
- # --- 2.1 绘制传统条形图 ---
- # ... 省略 ...
- # --- 2.2 绘制径向条形图 ---
- # 计算每个条形的角度位置
- # ... 省略 ...
- # 使用极坐标子图
- ax2 = plt.subplot(122, projection="polar")
- # 关键:设置 'bottom' 参数为 inner_radius,这样条形就从 inner_radius 开始画,长度为 radii
- bars = ax2.bar(
- theta,
- radii,
- width=0.4,
- bottom=inner_radius,
- color="lightcoral",
- edgecolor="darkred",
- alpha=0.7,
- )
- # 添加数值标签 (在条形内部,靠近外侧)
- for angle, radius, month in zip(theta, radii, 月份):
- ax2.text(
- angle,
- inner_radius + radius / 2,
- f"{radius:.1f}",
- ha="center",
- va="center",
- fontsize=8,
- color="black",
- )
- # 添加月份标记 (在条形外部)
- # ... 省略 ...
- # --- 3. 显示图形 ---
- plt.tight_layout()
- plt.show()
复制代码 这段代码首老师成了模拟的月度降水量数据,然后在同一个图形窗口中创建了两个子图。
左侧是使用 plt.bar 创建的传统条形图,右侧是使用 plt.subplot(..., projection='polar') 和 ax.bar 创建的径向条形图。
径向条形图使用了极坐标系,将种别(月份)分布在圆周上,将数值(降水量)映射到径向长度上。
径向条形图是一种在极坐标系上绘制的图表,可以提供比传统条形图更具视觉吸引力的更换方案。它通过弧长来表现数值,而且可以有用地使用空间,尤其是在处理处罚种别较多或须要夸大周期性模式(比方按月份或季度分组的数据)时。
2.2. 圆形条形图
- from matplotlib import cm
- from math import log10
- labels = list("ABCDEFG")
- data = [21, 57, 88, 14, 76, 91, 26]
- # ... 省略 ...
- #create colors along a chosen colormap
- colors = [cm.terrain(i / n) for i in range(n)]
- #create figure, axis
- fig, ax = plt.subplots()
- #create rings of donut chart
- for i in range(n):
- current_outer_radius = r - i * w
- innerring, _ = ax.pie([m - data[i], data[i]],
- radius = current_outer_radius,
- startangle = 90,
- colors = ["white", colors[i]])
- # 添加标签
- # ... 省略 ...
- plt.show()
复制代码
圆形条形图从同一基准线开始,制止了径向条形图中差别角度起始点差别的标题,更加便于比力。
3. 总结
径向条形图和圆形条形图代表了数据可视化从纯功能向功能美学均衡的演进。
它们不是要完全代替传统条形图,而是为我们提供了更多视觉叙事的工具。
就像一位熟练的厨师拥有多种刀具一样,良好的数据分析师也应该把握多种可视化技能,根据数据特性和沟通目标选择最符合的"刀具"。
当你的数据陈诉着周期性的故事,或须要在有限空间内举行多维度比力时,不妨实验这些圆形可视化方法。它们不光能更有用地转达信息,还能为你的陈诉或仪表板增长独特的视觉魅力。
最好的可视化不是最复杂的,而是最能清晰转达数据故事的。
径向和圆形条形图正是如许一种工具:在传统与当代之间,在功能与美学之间,找到了优雅的均衡点。
|