python - 使用 Plotly 绘制旭日图时如何避免 None ?

标签 python plotly plotly-python sunburst-diagram

我正在尝试使用 Plotly 创建旭日图。我的数据由不同步骤的几种不同类型的旅程组成。有些旅程需要 10 步,有些则需要 100 步。但为了简单起见,我们只考虑 3 步。

这是数据 -

import pandas as pd
import plotly.express as px
import numpy as np


data = {
  'step0' :['home', 'home','product2','product1','home'],
  'step1' : ['product1','product1', None, 'product2',None] ,
  'step2' : ['product2','checkout', None, None,None] ,
  'total_sales' : [50,20,10,0,7]
  }

data_df = pd.DataFrame(data)
data_df.head()

enter image description here

我现在尝试在旭日图中绘制这些步骤。由于某些旅程可能很短,因此在这些情况下后续步骤将标记为

data_df = data_df.fillna('end')

绘制代码-

fig = px.sunburst(data_df, path=['step0','step1','step2'], values='total_sales', height = 400)
fig.show()

enter image description here

正如您在上面看到的,None 已被 end 填充,因为 Plotly 不喜欢 NA。但我不想在旭日图中显示end

我想重新创建这样的东西 -

https://bl.ocks.org/kerryrodden/7090426

如何在 Plotly 中实现此功能?

最佳答案

使用已有内容的一种解决方法是用 "" 等空字符串代替 fillna,这样图表上就不会显示单词 "end" 。然后,您可以循环遍历 fig.data[0] 对象中的标记颜色和标记标签,将标记颜色更改为透明 "rgba(0,0,0,0)" 对于每个与空字符串匹配的标签。

唯一的事情是,hovertemplate 仍将显示我们使用解决方法隐藏的旭日图部分的信息,但静态图像看起来是正确的。

例如:

import pandas as pd
import plotly.express as px
import numpy as np


data = {
  'step0' :['home', 'home','product2','product1','home'],
  'step1' : ['product1','product1', None, 'product2',None] ,
  'step2' : ['product2','checkout', None, None,None] ,
  'total_sales' : [50,20,10,0,7]
  }

data_df = pd.DataFrame(data)
# data_df.head()

data_df = data_df.fillna(" ")
fig = px.sunburst(
  data_df, 
  path=['step0','step1','step2'], 
  values='total_sales', 
  color=["red","orange","yellow","green","blue"], 
  height = 400
)

## set marker colors whose labels are " " to transparent
marker_colors = list(fig.data[0].marker['colors'])
marker_labels = list(fig.data[0]['labels'])
new_marker_colors = ["rgba(0,0,0,0)" if label==" " else color for (color, label) in zip(marker_colors, marker_labels)]
marker_colors = new_marker_colors

fig.data[0].marker['colors'] = marker_colors
fig.show()

enter image description here

关于python - 使用 Plotly 绘制旭日图时如何避免 None ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71442845/

相关文章:

javascript - Plotly.extendTraces 仅适用于两个轨迹,但不适用于三个

python - plotly :如何向现有 plotly 添加箭袋?

python - 使 IPython 看起来像一个普通的 python shell

python - 从 HTML 页面获取数据

python - 将图形旋转至经纬度

python - Plotly.js 连接到 Django Rest Framework API - 这可能吗?如果可能的话,如何实现?

python - 第三个变量的颜色扰乱了plotly.express 日期轴的顺序

python - Plotly:如何以根样式绘制直方图,仅显示直方图的轮廓?

python - Python 中最快的 2D 卷积或图像过滤器

Python通过对值求和将字典的字典合并为一个字典