如何用 Python 绘制树形图?

Python 中的树状图是一种数据可视化,它将矩形分割成子部分。每个子部分的大小与其表示的数据成比例。它有点像饼图。尽管如此,与饼图相比,树形图可以表示更复杂的数据。

它可以帮助您直观地了解单个值如何组成一个整体。树状图还允许您使用嵌套矩形可视化分层数据。

在本教程中,我们将学习如何使用 Python 中的 Squarify 库在 Python 中绘制树形图。

让我们从安装 Squarify 开始。

pip install squarify
方形化

在 Python 中使用 Squarify 绘制树形图

一旦我们安装了 Squarify,我们就可以开始将它导入到我们的笔记本中。我们还导入matplotlib

import matplotlib.pyplot as plt
import squarify

1. 绘制基本树形图

要绘制一个非常基本的树形图,我们只需要每个矩形的值。绘制树状图后,矩形将与这些值成比例。

import matplotlib.pyplot as plt
import squarify
sizes = [40, 30, 5, 25]
squarify.plot(sizes)
plt.show()
树形图

2. 将标签添加到树形图中

您可以使用以下代码行在 Python 中向树状图添​​加标签:

import matplotlib.pyplot as plt
import squarify
sizes=[40, 30, 5, 25]
label=["A", "B", "C", "D"]
squarify.plot(sizes=sizes, label=label, alpha=0.6 )
plt.show()
标签

如果再次运行同一段代码,您将得到以下输出:

您可以看到每次运行时树形图的颜色方案都是不同的。矩形的颜色是随机选取的树形图还为您提供了提及颜色以及尺寸和标签的选项。接下来我们将学习如何更改树状图的颜色。

3. 更改树状图中的颜色

要在 Python 中更改树状图中的颜色,请列出您希望树状图具有的颜色。然后将该列表传递给 squareify.plot 方法。

import matplotlib.pyplot as plt
import squarify
sizes=[40, 30, 5, 25]
label=["A", "B", "C", "D"]
color=['red','blue','green','grey']
squarify.plot(sizes=sizes, label=label, color=color, alpha=0.6 )
plt.show()
改变颜色

4. 关闭绘图轴

要绘制没有绘图轴的树形图,请使用:

plt.axis('off')

这行代码将关闭绘图轴。完整代码如下:

import matplotlib.pyplot as plt
import squarify
sizes=[40, 30, 5, 25]
label=["A", "B", "C", "D"]
color=['red','blue','green','grey']
squarify.plot(sizes=sizes, label=label, color=color, alpha=0.6 )
plt.axis('off')
plt.show()
绘图轴关闭

绘制数据集的树形图

在本教程的这一部分中,我们将学习如何绘制数据集的树形图。我们将使用泰坦尼克号数据集。让我们从导入数据集开始。为了简化导入数据集的过程,我们将使用seaborn库。

1. 导入数据集

要将泰坦尼克号数据集从seaborn库导入到Python笔记本中,请使用:

import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic.head()
泰坦尼克号数据集

该数据集包含有关泰坦尼克号乘客的信息。

我们想根据幸存者所乘坐的班级为他们绘制一个树形图。

原始格式的数据尚未准备好绘制树形图。我们将进行一些操作并尝试提取可用于绘制树形图的数据。

为了获得每个类别的幸存者,我们将对数据使用分组方法。

2. 准备绘图数据

您可以在数据集上使用 groupby 函数,如下所示:

n = titanic.groupby('class')[['survived']].sum()
通过…分组

这给出了根据类别分组的幸存者总数。

现在我们需要从中提取数据和标签作为列表。

a = titanic.groupby('class')[['survived']].sum().index.get_level_values(0).tolist()
print(a)

输出 :

['First', 'Second', 'Third']

这为我们提供了列表形式的标签。要获取与这些标签对应的值,请使用:

d = titanic.groupby('class')[['survived']].sum().reset_index().survived.values.tolist()
print(d)

输出 :

[136, 87, 119]

现在我们有了列表形式的标签和数据。我们可以使用它们来绘制树形图。

3. 绘制树形图

要绘制树形图,请使用以下代码行:

squarify.plot(sizes=d, label=a, alpha=.8)
plt.axis('off')
plt.show()
泰坦尼克号树状图

通过可视化树形图,我们可以大致了解一等、二等、三等的幸存者数量。只需查看树状图,我们就可以自信地说第二类的幸存者数量最少。

在 Python 中绘制树形图的完整代码

本节的完整代码如下:

import seaborn as sns
import squarify
import matplotlib.pyplot as plt
 
titanic = sns.load_dataset('titanic')
 
a = titanic.groupby('class')[['survived']].sum().index.get_level_values(0).tolist()
 
d = titanic.groupby('class')[['survived']].sum().reset_index().survived.values.tolist()
 
squarify.plot(sizes=d,label=a, alpha=.8 )
plt.axis('off')
plt.show()

结论

在本教程中,我们学习了如何使用 Squarify 在 python 中绘制树形图。希望您和我们一起学习愉快。