📜  在 plotly 中使用 graph_objects 类的 Sunburst Plot(1)

📅  最后修改于: 2023-12-03 15:23:15.404000             🧑  作者: Mango

在 Plotly 中使用 graph_objects 类的 Sunburst Plot

Plotly 是一个用于数据可视化和数据分析的开源工具。其中,graph_objects 类允许程序员使用 Python 代码绘制高度可定制的图形。

Sunburst Plot(旋转饼图)是一种展示层级结构数据的可视化图表。在此文档中,将介绍如何在 Plotly 中使用 graph_objects 类绘制 Sunburst Plot。

1. 安装 Plotly

在开始之前,请确保已经安装了 Plotly。如果还未安装,可以使用以下命令在命令行中安装:

pip install plotly==4.14.3

注意:这里我们使用了 4.14.3 版本的 Plotly。如果你正在使用较旧的版本,请注意一些语法可能略有不同。

2. 导入必要的库

在开始使用 Plotly 之前,需要导入所需的库。

import plotly.graph_objects as go
3. 准备数据

在绘制 Sunburst Plot 之前,需要准备包含层级数据的数据帧。此时,需要注意以下几点:

  • 数据帧中必须包含每个层级数据点的名称;
  • 数据帧应包含每个层级数据点的父节点。除了根节点之外,每个节点都应有一个父节点。如果节点没有父节点,请将其父节点的名称设置为“”(空字符串);
  • 每个节点可以具有任意数量的子节点。

在本文中,我们使用 Plotly 自带的数据集“election”来演示:

import pandas as pd

data = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/election.csv")
4. 创建 Sunburst Plot

现在,我们准备好使用 Plotly 绘制 Sunburst Plot 了。我们使用 graph_objects 类中的 go.Sunburst 创建 Sunburst Plot 对象,并使用数据帧中的列名来指定每个层级数据点的名称、父节点、值等参数。下面是一个简单的示例:

fig = go.Figure(go.Sunburst(
    labels=data["candidate"],
    parents=data["parent"],
    values=data["vote"],
))

在上面的示例中,我们将“candidate”列设置为层级数据点的名称,将“parent”列设置为其父节点,将“vote”列设置为该节点的值。

注意:我们使用 go.Figure 函数将 Sunburst Plot 对象传递给 plotly.subplots 函数,以便在需要时方便地在同一个图表中绘制多个图形。

5. 配置 Sunburst Plot

在绘制 Sunburst Plot 之后,您可以使用各种方法来自定义其外观和行为。

例如,您可以更改 Sunburst Plot 的颜色主题:

fig.update_layout(colorway=['#FFCDD2', '#A2D5F2', '#FF7033', '#FFE082', '#DCE775'])

您也可以将图例位置更改为右上角:

fig.update_layout(legend=dict(yanchor="top", y=0.99, xanchor="left", x=0.01))
6. 显示 Sunburst Plot

最后,您可以使用以下代码将图表显示在 Jupyter Notebook 或任何支持 Plotly 图表的应用程序中:

fig.show()
完整示例代码
import plotly.graph_objects as go
import pandas as pd

data = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/election.csv")

fig = go.Figure(go.Sunburst(
    labels=data["candidate"],
    parents=data["parent"],
    values=data["vote"],
))

fig.update_layout(colorway=['#FFCDD2', '#A2D5F2', '#FF7033', '#FFE082', '#DCE775'])
fig.update_layout(legend=dict(yanchor="top", y=0.99, xanchor="left", x=0.01))

fig.show()
结论

使用 graph_objects 类的 Sunburst Plot 可以帮助您更好地理解高度层级的数据结构。使用此工具,您可以快速创建可视化图表,以便更好地展示和分析层级数据。