首页 > 解决方案 > Plotly:在 sunburst 中添加与父类成比例的平行特征

问题描述

在一个 plotly sunburst 图表中,我想将多个子类添加到父类。我已尝试将值分配给此处names, parents, values所示。但它返回一个空白数字。我尝试创建一个变量(在下面的代码中),但我不确定如何将多个直接子级命名为单个父类。这就是我想要的-path

在此处输入图像描述

这是重现的代码-

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。我希望它们的大小与它们的价值成比例。帮助将不胜感激!

标签: pythonplotlydata-visualizationplotly-pythonsunburst-diagram

解决方案


如您所见,有两种方法可以使用px.sunburst(). 使用path变量或使用names,parentsvalues变量。

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

因此,您必须使用第二个变体。由于您有一些名称相同的叶子,因此您需要除names,parents之外values还需要定义一个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()

结果将如下所示: 旭日形图


推荐阅读