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

如何用Sunburst或特色图表可视化API变更中破坏性变更的占比?

API变更占比可视化方案推荐

问题场景

现有如下结构的DataFrame:

id         date          API_changes    count    content

134     2019-01-01           2           NaN      Nan
134     2019-02-05          34           12       API deleted
134     2019-02-12          18            8       Deprecation
134     2019-03-10          56           29       Segmentation Error
134     2019-05-12          75           40       Path deleted
134     2019-07-01          25           10       Type required
134     2019-10-09          137          55       API deprecated
134     2019-12-31          32           18       Media type removed
134     2020-01-03          150          99       Required param missing

需求为可视化count在API_changes中的占比(count代表对应日期提交中,API变更里的破坏性变更数量),此前使用散点图无法直观呈现不同日期的变更规模差异,考虑过堆叠条形图,希望优先尝试旭日图(Sunburst)或其他更独特的可视化方案。

可选可视化方案

1. 旭日图(Sunburst)

旭日图天生适合展示层级化占比关系,针对你的数据可以设计三层结构:

  • 最外层:按日期分组,代表单次提交的总API变更规模(API_changes)
  • 中间层:将每个日期的变更拆分为「破坏性变更(count)」和「非破坏性变更(API_changes - count)」两类
  • 最内层:对破坏性变更进一步拆分,映射content列的具体变更类型

实现前需预处理数据:

  • 将count为NaN的行填充为0(如2019-01-01的记录,标记为无破坏性变更)
  • 构造包含parent、label、value的层级数据(适配主流可视化库的旭日图要求)

示例代码思路(基于Plotly):

import plotly.express as px
import pandas as pd

# 预处理数据
df['count'] = df['count'].fillna(0)
df['non_destructive'] = df['API_changes'] - df['count']

# 构造旭日图层级数据集
sunburst_data = []
for _, row in df.iterrows():
    # 添加日期总节点
    sunburst_data.append({'parent': '', 'label': row['date'], 'value': row['API_changes']})
    # 添加破坏性变更节点及对应类型
    if row['count'] > 0:
        sunburst_data.append({'parent': row['date'], 'label': '破坏性变更', 'value': row['count']})
        sunburst_data.append({'parent': '破坏性变更', 'label': row['content'], 'value': row['count']})
    # 添加非破坏性变更节点
    sunburst_data.append({'parent': row['date'], 'label': '非破坏性变更', 'value': row['non_destructive']})

# 生成并展示图表
sunburst_df = pd.DataFrame(sunburst_data)
fig = px.sunburst(sunburst_df, names='label', parents='parent', values='value')
fig.show()

2. 环形堆叠条形图(Donut Stacked Bar)

相比普通堆叠条形图,环形设计更具辨识度,同时保留日期维度的对比性:

  • 每个环形条形的总长度对应当日API_changes总数
  • 环形的一段为count(用不同颜色区分content类型),剩余部分为非破坏性变更
  • X轴为日期,可直观对比不同日期的变更规模和破坏性变更占比

3. 百分比堆叠面积图

若需体现时间维度的趋势变化,该方案更合适:

  • X轴为日期,Y轴为变更数量的占比
  • 不同颜色的面积块对应content中的各类破坏性变更,总面积高度对应当日API_changes总规模
  • 既能看到整体变更规模的时间波动,也能清晰对比各类破坏性变更的占比趋势

内容的提问来源于stack exchange,提问作者Brie MerryWeather

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:51