使用Python和Plotly Express绘制树状图

2025年3月4日 | 阅读 9 分钟

引言

TreeMap 是一种分层可视化,其中数据中每个嵌套矩形的大小都与某个统计数据相关联。Python 的 Plotly Express 包使得交互式 Treemap 构建更加容易,从而实现了更自然的と数据探索和展示。如果还没有安装,使用 Plotly Express 生成 Treemap 的第一步是安装该库。然后,您可以通过传入数据和必需的参数(例如 {path} 用于分层级别和 `values` 用于大小指标),使用 DataFrame 来执行 `px.treemap` 方法。为了改进数据分析和可视化,最终的图表将是一个交互式 Treemap,允许用户探索不同层次结构中的数据链接。

Plotly 中的 TreeMap

Plotly 中的 Treemap 使用嵌套矩形提供分层数据的可视化表示。数据度量反映在每个矩形的大小中,从而可以以一种可理解的方式探索数据分布和关系。Plotly 的 `plotly.express` 库中的 `px.treemap` 函数可以轻松创建 Treemaps。除了提供 DataFrame 外,您还可以为矩形大小指定 `values` 参数,为层次结构级别指定 `path` 参数。此交互式图形使层次结构中的模式和比例可见,这有助于分析复杂数据集。

语法

参数

  • data_frame: 包含分层数据的数据框。
  • path: 按层次级别列出列名以定义层次结构。
  • values: 基于此数据,指定每个矩形的大小。
  • color: 利用此信息分配颜色。
  • hover_data: 鼠标悬停在矩形上时显示的额外信息。

此函数生成的交互式 Treemap 可以更改其配色方案、布局和层次结构深度等。

使用 DataFrame,`plotly.express.treemap` 函数会生成交互式 Treemaps。`data_frame` 用于数据源,`path` 用于提供标签层次结构,`values` 用于矩形大小是重要的输入。颜色方案由 `color_discrete_sequence` 和 `color_continuous_scale` 管理,而颜色则通过 `color` 参数根据数据分配。使用 `hover_data`,您可以个性化悬停信息,并且 `title`、`width` 和 `height` 可以更改图的外观。层次结构可见的深度由 `maxdepth` 选项控制,`branchvalues` 参数定义大小是计算为总和还是余数。此功能可以详细地交互式地查看分层数据,从而促进复杂数据集的探索和理解。

示例

输出

Grow a TreeMap with Python and Plotly Express

说明

在上面的代码片段中,我们借助 Plotly Express 生成了一个交互式 Treemap。首先,我们定义了一个包含分层数据的数据框,其中 `names` 用于标签,`parents` 用于父子关系,`values` 用于矩形大小,`colors` 用于颜色编码。通过为 `names`、`parents`、`values` 和 `color` 指定可视化表示,`px.treemap` 函数创建了 Treemap。`title` 参数添加了图表标题,`color_continuous_scale` 参数使用“Viridis”定义了颜色渐变。通过将 `width` 选项设置为 `600`,Treemap 的水平大小减小,提高了其与不同布局的兼容性。最后,使用 `fig.show()` 显示图表,提供了产品类别的交互式表示。

绘制分层 DataFrame 的 TreeMap

Plotly Express 通过绘制分层 DataFrame 的 Treemap,可以清晰地呈现复杂、嵌套的数据。Treemap 的分层结构由父子关系表示,并显示为嵌套矩形,每个矩形的大小表示一个值。通过创建具有提供标签、父节点、大小值和可选颜色编码的列的数据框来创建它。可以使用 `plotly.express.treemap` 将 `names`、`parents`、`values` 和 `color` 参数映射到这些列。生成的 Treemap 提供了一种交互式且自然的方式来检查分层数据,有助于可视化和探索数据分布和关系。

示例

输出

Grow a TreeMap with Python and Plotly Express

说明

在上面的代码片段中,我们使用 Plotly Express 创建了一个 Treemap,以可视化不同地区、类别和子类别之间的收入数据。我们通过指定 `Region`、`Category`、`Sub-Category` 和 `Revenue` 列将数据存储在 Pandas DataFrame 中。然后,我们使用 `px.treemap` 函数生成 Treemap,其中 `path` 参数设置为层次结构(Region → Category → Sub-Category),`values` 参数设置为 `Revenue` 来调整矩形的大小。我们将 `width` 参数设置为 500,以将图的宽度减小到 500 像素,从而使 Treemap 更紧凑。`fig.show()` 函数显示了交互式 Treemap,允许用户探索不同地区和产品类别之间的分层收入分布。

使用连续颜色参数绘制分层 DataFrame

使用 Plotly Express 中的连续颜色参数绘制分层 DataFrame 可以通过基于数值变量添加渐变色阶来增强可视化效果。`color` 参数允许您将连续数据列映射到颜色,从而创建一种直观的方式来表示 Treemap 中数据的变化。通过使用 `color_continuous_scale`,您可以自定义颜色渐变,使模式和趋势更加明显。这种方法对于可视化收入、销售或人口等指标特别有用,通过大小和颜色的表示提供了对数据层次结构的更深入的见解。

示例

输出

Grow a TreeMap with Python and Plotly Express

说明

在上面的代码片段中,我们使用 Plotly Express 生成了一个 Treemap,以可视化大陆、国家和城市之间的人口数据。我们创建了一个 DataFrame 来表示收集的数据,包括 `Continent`、`Country`、`City` 和 `Population`。然后,我们使用 `px.treemap` 函数构建 Treemap,其中 `path` 参数定义了层次结构(Continent → Country → City),并将 `Population` 的 `values` 设置为调整矩形的大小。`color` 参数还将 `Population` 值映射到连续颜色比例,使用“Blues”颜色方案提供渐变效果。`width` 参数设置为 500 像素,减小了 Treemap 的整体宽度,使其更紧凑,适合不同的显示尺寸。

使用连续颜色参数绘制分层 DataFrame

使用 Plotly Express 中的连续颜色参数绘制分层 DataFrame 可以实现对复杂、嵌套数据的详细且具有视觉吸引力的表示。Treemap 将分层数据显示为嵌套矩形,其中每个矩形的大小和颜色都传达了重要信息。通过使用 `color` 参数,您可以将连续变量(例如,人口、销售额或收入)映射到颜色渐变,从而增强数据的视觉效果。`color_continuous_scale` 参数允许自定义颜色方案,有助于突出层次结构中的模式和趋势。这种方法对于理解复杂数据集特别有用,因为它将分层结构与连续颜色渐变相结合,提供了对数据的更深入的见解。

使用 Plotly Express 中的连续颜色参数绘制分层 DataFrame 提供了一种可视化复杂数据结构的高级方法。在这种情况下使用的 Treemap 将数据分解为嵌套矩形,其中每个矩形的面积和颜色都提供了对数据的见解。由 `color_continuous_scale` 定义的连续颜色比例允许您使用渐变颜色表示一系列值,从而更容易识别层次结构不同级别上的趋势、异常值和模式。这种分层表示和颜色编码的组合在金融、人口统计学和销售分析等领域尤其有效,在这些领域,理解值的分布和数量对于决策至关重要。

示例

输出

Grow a TreeMap with Python and Plotly Express

说明

在上面的代码片段中,我们使用 Plotly Express 生成了一个 Treemap,以可视化不同部门和团队的员工数据。我们将数据存储在 Pandas DataFrame 中。然后,我们使用 `px.treemap` 函数来创建 Treemap,其中 `path` 参数定义了分层结构。`values` 参数使用 `Salary` 列来确定矩形的大小,表示薪水的数量级。`color` 参数将 `Experience` 列映射到连续颜色比例,从而可以通过颜色强度可视化经验水平。`color_continuous_scale` 设置为“RdBu”,它根据经验应用从红色到蓝色的渐变。`width` 参数设置为 500 像素,减小了 Treemap 的整体宽度,使其更紧凑,适合各种显示尺寸。

使用 Treemap 的一些优点

使用 Treemap 的一些好处如下

  1. 显示分层数据: Treemaps 是显示分层数据的绝佳工具,因为它们可以将数据分解为嵌套矩形,每个矩形代表一个类别或子类别。由于这种结构,更容易理解不同数据级别之间的关系。Treemaps 以分层方式排列数据,可以轻松查看不同部分如何组合在一起,并揭示跨越多个级别的模式和趋势。
  2. 交互式探索: Plotly Express 使交互式 treemaps 成为可能。用户可以单击项目来探索层次结构的更高级别,放大特定区域以近距离查看,并悬停在矩形上以显示完整信息。通过让查看者直接与数据交互,这种交互性将静态数据可视化转化为动态工具,在探索方面尤其有用。
  3. 维度和颜色说明: Treemaps 使用颜色来表示数据的一个维度(例如增长率或类别),并使用每个矩形的大小来表示另一个维度(例如收入或人口)。由于用户可以同时评估数据的分布和数量级,因此这种双重表示促进了对数据的更复杂的理解,并使得识别数据集中的显著差异更加容易。
  4. 个性化选项: 对于 Treemaps,Plotly Express 提供了广泛的自定义选项,例如修改颜色比例、标签、标题和布局特征。用户可以自定义其 Treemap 的外观,以引起人们对其数据特定区域的关注,从而确保视觉辅助不仅具有教育意义,而且对目标受众或信息具有视觉吸引力,从而提高整体性能。

结论

使用 Python 和 Plotly Express 构建 treemap 是可视化复杂、分层数据的清晰且交互式的方法。通过同时表示数据点的大小和颜色,可以更全面地理解数据中的链接和分布。凭借其直观的界面和广泛的自定义功能,Plotly Express 可以轻松地根据特定的分析需求调整 Treemap。由于增强了数据探索的交互式元素,用户可以更深入地探究细节并发现静态表示可能忽略的见解。此外,Plotly 的跨平台兼容性和跨多个平台交互的简便性确保了这些可视化可以广泛共享且易于访问。