You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Python DataFrame绘制城市-数值映射的径向条形/柱状图?

实现径向条形图(Radial Bar Chart)

需求说明

你有如下结构的DataFrame(名为df),需要将城市与对应数值映射为径向条形图:

CityCounts
Leeds5
Liverpool7
Birmingham8
Nottingham14

此前你已实现水平条形图,现在需要转换为极坐标径向条形图的效果。

实现步骤与代码

1. 导入依赖库

需要用到matplotlib.pyplot、numpy以及pandas(用于处理DataFrame):

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

2. 数据预处理与极坐标参数计算

  • 提取DataFrame中的数值与城市名称
  • 计算每个城市对应的极坐标角度(转换为弧度)
  • 设置每个条形的角度宽度
# 提取数据
counts = df['Counts'].values
cities = df['City'].values
n_cities = len(cities)

# 计算每个城市对应的角度(弧度),从0开始均匀分配
angles = np.linspace(0, 2 * np.pi, n_cities, endpoint=False)
# 设置每个条形的角度宽度
bar_width = 2 * np.pi / n_cities

3. 创建极坐标绘图并绘制条形

使用projection='polar'创建极坐标子图,再用plt.bar绘制径向条形:

# 创建极坐标绘图对象
plt.figure(figsize=(8, 8))
ax = plt.subplot(projection='polar')

# 定义颜色(可复用你之前的颜色列表)
colors = ["red","green","blue","yellow","magenta","cyan"]
# 绘制径向条形
bars = ax.bar(angles, counts, width=bar_width, color=colors[:n_cities])

# 自定义刻度:将角度刻度替换为城市名称
ax.set_xticks(angles)
ax.set_xticklabels(cities)

# 调整径向刻度范围,适配数据最大值
ax.set_ylim(0, counts.max() + 2)

# 添加标题与径向标签
ax.set_title("各城市数值分布(径向条形图)", y=1.1)
ax.set_ylabel("Counts", labelpad=30)

plt.show()

关键说明

  • projection='polar'是开启极坐标绘图的核心参数,替代普通笛卡尔坐标系
  • angles将城市均匀分配在极坐标圆周上,保证布局整齐
  • 通过set_xticklabels替换默认角度刻度为城市名称,提升可读性
  • 调整ylim可以避免条形顶部超出绘图区域

内容的提问来源于stack exchange,提问作者Abhipriyo Banerjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:15:29