Plotly:在 sunburst 中添加平行特征,其大小与父 class 成比例

Plotly: Add parallel features in sunburst with sizes proportionate to parent class

在阴谋森伯斯特图表中,我想将多个子 class 添加到父 class。我已尝试将值分配给 names, parents, values,如图 here 所示。但它 returns 是一个空白数字。我尝试制作一个 path 变量(在下面的代码中),但我不确定如何将多个直接子级命名为单个父级 class。这就是我想要的-

这里是重现的代码-

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'continent':['SA','SA','NA','NA'],
                  'country':['Brazil','Uruguay','USA','Canada'],
                  'total_vaccinations':[100,80,400,200],
                  'people_vaccinated':[40,20,100,80],
                  'people_fully_vaccinated':[8,4,11,11]})

px.sunburst(df, path=['continent','country'],values='total_vaccinations')

我想要 people_vaccinatedpeople_fully_vaccinated 特征作为描述 total_vaccinations 的各自国家的子特征。我希望它们的大小根据它们的值成比例。非常感谢您的帮助!

如您所见,有两种方法可以使用 px.sunburst() 创建旭日图。使用 path 变量或使用 namesparentsvalues 变量。

带有 path 变量的第一个变体适用于矩形数据,因此不适合您,因为您有缺失值。虽然矩形数据存在缺失值的可能,但要求缺失值的父项没有其他条目(plotly ref).

因此,您必须使用第二种变体。由于您有一些具有相同名称的叶子,因此除了 namesparentsvalues 之外,您还需要定义一个具有唯一字符串的列表 ids

import pandas as pd
import plotly.express as px


data = {
  'ids':['SA', 'NA', 'Brazil', 'Uruguay', 'USA', 'Canada', 'PFV Brazil', 'PV Brazil', 'PFV Uruguay', 'PV Uruguay', 'PFV USA', 'PV USA', 'PFV Canada', 'PV Canada'],
  'labels': ['SA', 'NA', 'Brazil', 'Uruguay', 'USA', 'Canada', 'PFV', 'PV', 'PFV', 'PV', 'PFV', 'PV', 'PFV', 'PV'],
  'parent': ['', '', 'SA', 'SA', 'NA', 'NA', 'Brazil', 'Brazil', 'Uruguay', 'Uruguay', 'USA', 'USA', 'Canada', 'Canada'],
  'value': [0, 0, 100, 80, 400, 200, 8, 40, 4, 20, 11, 100, 11, 80]
  }

fig =px.sunburst(data, names='labels', parents='parent',  values='value', ids='ids')
fig.show()

结果将如下所示: