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

2024-06-25 06:18:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个生动的太阳爆发图中,我想将多个子类添加到父类中。我已经尝试给names, parents, values赋值,如图here。但是它返回一个空白的数字。我尝试创建一个path变量(在下面的代码中),但我不确定如何将多个直接子类命名为一个单亲类。这就是我想要的-

enter image description here

这是要复制的代码-

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的国家。我希望它们的大小与它们的价值成比例。非常感谢您的帮助


Tags: path代码importdfassapeople子类
1条回答
网友
1楼 · 发布于 2024-06-25 06:18:36

如您所见,有两种方法可以使用px.sunburst()创建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()

结果如下所示: sunburst graph

相关问题 更多 >