用 Python 创建树状图(GNI 数据分析特辑)

许多人喜欢使用数据可视化来直观地理解复杂的信息,而树状图就是一个很好的工具。

파이썬 이용한 트리맵 그림

在本篇文章中,我们将向您展示如何用 Python 创建一个树状地图,并用它来分析 2014 年各国的国民总收入 (GNI)。

什么是树形地图?

树状地图是将分层数据可视化为矩形的一种方法。 矩形的大小表示该数据的值,而 其他颜色分开。

Python 代码说明

1. 安装并加载所需的软件包

在 Python 中, 大熊猫, matplotlib, 平方rpy2 软件包。首先,安装并加载所需的软件包。

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
import squarify
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri

# 在 MacOS 上设置韩文字体
font_path = '/Library/Fonts/Arial Unicode.ttf' # 更改为实际字体文件路径
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)

# 安装必要的软件包(如果需要安装的话)
# !pip install pandas matplotlib squarify rpy2

# 使用 Rpy2 安装和加载 R 软件包
robjects.r('install.packages("treemap", repos="http://cran.us.r-project.org")')
robjects.r('library(treemap)')
  • Pandas:一个为 Python 数据分析提供高性能数据结构和数据分析工具的库。通过 DataFrame 对象,可以轻松操作和分析数据。
  • Matplotlib:这是一个允许您以多种方式在 Python 中实现数据可视化的库。您可以创建绘图、图形、直方图等。
  • Squarify:一个生成树状图的 Python 库。通过它,您可以直观地看到矩形数据的相对大小。
  • Rpy2:R 和 Python 之间的接口,可将数据集从 R 导入 Python。

2. 导入和预处理数据

rpy2使用 R's 树状图 套餐来加载和预处理 GNI 提供的 GNI2014 数据集。我在 Python 软件包中没有找到任何可以使用的东西,因此我借用了 R 软件包中的数据。

将 # R 数据转换为 pandas DataFrame
pandas2ri.activate()

从 # R 的 treemap 包中导入 GNI2014 数据集
robjects.r('data("GNI2014")')
GNI2014 = robjects.r('as.data.frame(GNI2014)')
GNI2014 = pandas2ri.rpy2py(GNI2014)

为国民总收入排名前 # 和前 25% 的国家添加标签
GNI2014['label'] = GNI2014.apply(lambda x: x['country'] if x['GNI'] > GNI2014['GNI'].quantile(0.75) else '', axis=1)

3. 创建树状地图

现在 平方matplotlib创建树状地图。

创建 # 树状地图
plt.figure(figsize=(12, 8))
colours = plt.cm.viridis(GNI2014['GNI'] / max(GNI2014['GNI']))
squarify.plot(sizes=GNI2014['GNI'], label=GNI2014['label'], color=colours, alpha=.8)
plt.axis('off')
plt.title('GNI 2014 数据集树状图', fontsize=20)
plt.suptitle('各国国民总收入比较', fontsize=16)
plt.show()

解读结果

运行上述代码后,您将得到一个树状地图,可以直观地比较不同国家的国民总收入,如帖子顶部所示。 每个矩形的大小代表该国的国民总收入,颜色则根据国民总收入的数值而变化。

常见问题

  1. 我能用熊猫做什么?
    - Pandas 使用数据帧来读取、写入、操作和分析数据。您可以轻松完成导入 CSV 文件或选择特定数据列等操作。
  2. Matplotlib 和其他可视化库有什么区别?
    - Matplotlib 非常灵活,可以创建多种不同类型的图表,但对于初学者来说,使用起来可能比较复杂。Seaborn 基于 Matplotlib,可提供更简单的可视化效果,而 Plotly 则可轻松创建交互式图表。
  3. Squarify 何时有用?
    - Squarify 可帮助您创建树状图。树状图能帮助你直观地比较数据,尤其适用于直观地阐明分层数据或比较。
  4. 树状地图库提供哪些功能?
    - 树状地图库为树状地图可视化提供数据集,并帮助您使用示例数据进行练习。在这里,我们使用 load_gni2014 函数加载 2014 年国民总收入数据。
  5. 创建树状地图时,如何设置每个矩形的颜色不同?
    - 您可以同时使用 Squarify 和 Matplotlib 来设置颜色,也可以使用 plt.cm.viridis 等色谱图根据数据值来着色。
  6. apply 函数在数据预处理中的作用是什么?
    - 应用函数允许您对数据帧中的每一行或每一列应用一个函数。在这里,如果每个国家的国民总收入排在前 25% 位,就可以使用该函数添加国名作为标签。

完整代码和包装

最后,让我们来清理整个代码。

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
import squarify
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri

# 在 MacOS 上设置韩文字体
font_path = '/Library/Fonts/Arial Unicode.ttf' # 更改为实际字体文件路径
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)

# 安装所需的软件包(如果需要安装的话)
# !pip install pandas matplotlib squarify rpy2

# 使用 Rpy2 安装和加载 R 软件包
robjects.r('install.packages("treemap", repos="http://cran.us.r-project.org")')
robjects.r('library(treemap)')

将 # R 数据转换为 pandas DataFrame
pandas2ri.activate()

在 # R 中从 treemap 包加载 GNI2014 数据集
robjects.r('data("GNI2014")')
GNI2014 = robjects.r('as.data.frame(GNI2014)')
GNI2014 = pandas2ri.rpy2py(GNI2014)

为国民总收入排名前 # 和前 25% 的国家添加标签
GNI2014['label'] = GNI2014.apply(lambda x: x['country'] if x['GNI'] > GNI2014['GNI'].quantile(0.75) else '', axis=1)

生成 # 树状地图
plt.figure(figsize=(12, 8))
colours = plt.cm.viridis(GNI2014['GNI'] / max(GNI2014['GNI']))
squarify.plot(sizes=GNI2014['GNI'], label=GNI2014['label'], color=colours, alpha=.8)
plt.axis('off')
plt.title('GNI 2014 数据集树状图', fontsize=20)
plt.suptitle('各国国民总收入对比', fontsize=16)
plt.show()

在本篇文章中,您将学习如何使用 Python 创建树形图。 利用这些可视化技术,您可以更高效地分析和交流数据。今后,我们将探索更多数据可视化技术!

如果您想用 R 而不是 Python 来查看相同可视化的过程和结果,可以使用 在 R 中可视化树状图:利用 2014 年国民总收入数据集比较各国的国民总收入 (GNI) 看看这篇文章。

类似文章