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 中绘制树形图。希望您和我们一起学习愉快。