Python绘制Tree Map

本文介绍了TreeMap作为一种数据分析工具,用于展示具有层次关系的数据。通过Python的Matplotlib和Plotly库,展示了如何使用TreeMap展示科学问题在期刊中出现的频次,以及如何包括子组的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Tree Map?

树状图(Treemap),是用于展现有群组、层次关系的比例数据的一种分析工具,它通过矩形的面积、排列和颜色来显示复杂的数据关系,并具有群组、层级关系展现功能,能够直观体现同级之间的比较。

树状图由马里兰大学教授Ben Shneiderman于上个世纪90年代提出,起初是为了找到一种有效了解磁盘空间使用情况的方法(引自知乎上叶小烨的回答)。

Python实现

例如我们利用Tree Map来绘制某些关键科学问题在期刊中出现的频次,如机器学习方法在地下水位埋深中的预测在不同期刊中出现的频次,以下是示例数据。

import matplotlib.pyplot as plt
import squarify

# 示例数据,\n是换行,由于字太长出了矩形框做了换行处理
categories = ["Journal of Hydrology", "Geocarto International", "Water",
              "Science of the\n Total Environment", "Water\n Resources\n Research",
              "Agricultural\n Water\n Management"]
values = [19, 14, 7, 6, 4, 4]

# 颜色映射,你可以根据需要修改
color = [0.1, 0.5, 0.9, 0.3, 0.7, 0.2]

plt.figure(figsize=(8, 6))  # 通过设置 figsize 调整图形大小

# 绘制 Tree Map,size是矩形的大小,根据值来绘制不同的大小
squarify.plot(sizes=values, label=categories, color=plt.cm.Paired(color), alpha=0.7
              , text_kwargs={'fontsize': 12})

# 设置标题
plt.title("Tree Map")

# 隐藏坐标轴
plt.axis('off')

# 显示图形
plt.show()

结果展示:
在这里插入图片描述
如果想要设置亚组也是可以的,即一个大类(主要组)中包含多个小类(亚组)。
代码展示,以下是示例数据:

import plotly.express as px

# 示例数据框
data = dict(
    main_group=["Group1", "Group1", "Group1", "Group1", "Group2", "Group2", "Group3"],
    sub_group=["SubgroupA1", "SubgroupA2", "SubgroupA3", "SubgroupA4", "SubgroupB1", "SubgroupB2", "SubgroupC"],
    value=[5, 5, 10, 5, 8, 12, 20]
)

# 创建Tree Map图
fig = px.treemap(
    data,
    path=['main_group', 'sub_group'],  # 指定数据的层次结构
    values='value',
    title='Tree Map with Subgroups',
    color='main_group',  # 使用主要组列作为颜色
    color_discrete_map={'Group1': 'lightblue', 'Group2': 'lightpink',
                        'Group3': 'lightgreen'},  # 自定义颜色映射
)

# 设置标签字体大小
fig.update_layout(
    font=dict(size=20)
)

# 显示图形
fig.show()

结果展示:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭博锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值