问题描述
在一个复杂的旭日形图表中,我想将多个子类添加到一个父类中。我已尝试为 names,parents,values
赋值,如图 here。但它返回一个空白数字。我尝试创建一个 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_vaccinated
和 people_fully_vaccinated
特征作为描述 total_vaccinations
的各个国家的孩子。我希望它们的大小与它们的价值成正比。将不胜感激!
解决方法
如您所见,有两种方法可以使用 px.sunburst()
创建旭日图。使用 path
变量或使用 names
、parents
和 values
变量。
带有 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','PFV','PV','PV'],'parent': ['','','SA','Canada'],'value': [0,100,80,400,200,8,40,4,20,11,80]
}
fig =px.sunburst(data,names='labels',parents='parent',values='value',ids='ids')
fig.show()