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

如何将路径-大小列表转换为DataFrame并绘制Plotly旭日图

路径-大小数据转DataFrame并绘制Plotly旭日图

1. 将原始数据转换为层级化DataFrame

你的数据每行包含路径和对应大小,我们可以直接拆分路径为层级节点,构建适配Plotly的DataFrame。Python实现代码如下:

import pandas as pd
import plotly.express as px

# 原始数据行
raw_data = [
    "foo0/bar0/a0/b0/c0 50",
    "foo0/bar0/a0/b1 30",
    "foo1/bar0/a0/b0 10",
    "foo1/bar1 20",
    "foo1/bar2/a0/b0/c0 20",
    "foo1/bar2/a0/b0/c1 30"
]

# 拆分路径与大小,整理为层级列表+大小的结构
processed_data = []
for line in raw_data:
    path_str, size_str = line.split()
    # 按斜杠拆分路径为层级节点
    hierarchy_nodes = path_str.split('/')
    processed_data.append({'hierarchy': hierarchy_nodes, 'size': int(size_str)})

# 转换为DataFrame
df = pd.DataFrame(processed_data)

2. 绘制旭日图

Plotly的sunburst函数支持直接传入包含层级列表的列,无需将每个层级拆分为单独的DataFrame列:

# 以层级列表为路径,size为数值绘制旭日图
fig = px.sunburst(df, path='hierarchy', values='size')
fig.show()

可选:拆分层级为单独列(适配复杂自定义需求)

如果需要对特定层级做筛选、重命名等操作,可以将路径拆分为多列,补全短路径的空白层级:

# 计算最长路径的层级数
max_hierarchy_depth = max(len(line.split('/')) for line in raw_data)

processed_data = []
for line in raw_data:
    path_str, size_str = line.split()
    hierarchy_nodes = path_str.split('/')
    # 补全到最大层级数,空白位置用None填充
    hierarchy_nodes += [None] * (max_hierarchy_depth - len(hierarchy_nodes))
    processed_data.append(hierarchy_nodes + [int(size_str)])

# 生成带独立层级列的DataFrame
column_names = [f'level_{i+1}' for i in range(max_hierarchy_depth)] + ['size']
df = pd.DataFrame(processed_data, columns=column_names)

# 绘制旭日图
fig = px.sunburst(df, path=column_names[:-1], values='size')
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:19:57