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

基于Python的角度分布可视化及玫瑰图实现方法咨询

角度分布可视化方案结论

针对你手里371行航迹控制角度(Track_Angle_Ctrl列,单位为度)的分布可视化需求:

  • 玫瑰图(极坐标柱状图)是非常适配的方案,完全可以用,属于这类圆周周期型数据的首选可视化方式之一,不存在适配性问题。
  • 如果需要补充平滑的分布趋势,可以在玫瑰图基础上叠加极坐标核密度曲线,不需要额外换其他图表类型。
玫瑰图适配这个场景的核心原因
  • 角度是0-360度循环的周期值,普通直角坐标直方图会把0度和360度割裂在坐标轴两端,很容易把跨0点的连续分布误读为两个独立的峰;玫瑰图的环形极坐标结构天然匹配角度的周期属性,不存在这个问题。
  • 371的样本量足够支撑分箱统计,不会因为样本过少出现柱高随机波动过大、分布规律被噪声掩盖的问题。
  • 玫瑰图的可读性极强,不需要额外解释就能快速看出角度分布的集中区间、多峰特征、方向偏好,适合做结论展示。
具体实现步骤(Python通用方案,依赖pandas、numpy、matplotlib,都是数据分析常规库)

首先提前做数据校验:如果你的角度列存在负值、或者大于360度的值,先做取模归一化到0-360度区间,执行命令:df['Track_Angle_Ctrl'] = df['Track_Angle_Ctrl'] % 360

  • 第一步:导入依赖、读取本地CSV文件
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 把引号内的内容替换成你本地CSV的实际路径
df = pd.read_csv('your_track_data.csv')
angles = df['Track_Angle_Ctrl'].values
  • 第二步:角度分箱统计
    371个样本推荐按每20-30度做一个分箱:30度分箱对应12个方位区间,可读性最好;20度分箱共18个区间,能展示更细的分布特征。
# 分箱宽度设置,可按需调整为20
bin_width = 30
# 生成分箱边界
bins = np.arange(0, 360 + bin_width, bin_width)
# 统计每个分箱内的样本数量
counts, bin_edges = np.histogram(angles, bins=bins)
# 计算每个分箱的中心角度,转换为弧度供matplotlib极坐标使用
bin_centers = np.deg2rad(bin_edges[:-1] + bin_width / 2)
  • 第三步:绘制玫瑰图主体
# 创建正方形画布,避免极坐标拉伸变形
fig = plt.figure(figsize=(8, 8), dpi=100)
ax = fig.add_subplot(111, polar=True)

# 绘制极坐标柱状图(玫瑰图核心)
bars = ax.bar(
    x=bin_centers,
    height=counts,
    width=np.deg2rad(bin_width),
    bottom=0,
    color='#2E86AB',
    alpha=0.75
)

# 调整极坐标样式匹配航迹角度的常规认知
ax.set_theta_zero_location('N')  # 将0度设置在正北方
ax.set_theta_direction(-1)  # 设置角度顺时针增长
ax.set_xticks(np.deg2rad(np.arange(0, 360, 30)))
ax.set_xticklabels(['0°', '30°', '60°', '90°', '120°', '150°', '180°', '210°', '240°', '270°', '300°', '330°'])
ax.set_ylabel('区间样本数', labelpad=30)

plt.title('Track_Angle_Ctrl 角度分布玫瑰图', pad=20, fontsize=12)
plt.show()
  • 第四步:可选优化
    • 如果要展示占比而非绝对样本数,把统计值替换为counts / counts.sum(),同时把纵轴标签改为“区间占比”即可
    • 可以给每个柱子添加数值标注,直接在柱顶显示对应区间的样本数/占比
    • 需要看平滑分布趋势的话,可以用scipy.stats.gaussian_kde生成极坐标下的密度曲线,叠加在玫瑰图上层
不使用玫瑰图的备选方案

如果因为排版、风格问题不想用玫瑰图,可以选以下方案,优先级从高到低:

  • 环形直方图:逻辑和玫瑰图一致,只是把柱子做中空处理,视觉上更轻量化
  • 调整截断点的直角坐标直方图:手动把坐标轴的截断位置选在样本分布最少的角度区间,避免割裂连续分布,但是需要额外做分布探查,不如玫瑰图方便
  • 极坐标密度热图:更适合万级以上样本量的场景,371个样本使用会显得分布过于稀疏,不推荐

内容的提问来源于stack exchange,提问作者Prateek Sinha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:21:23