11 KiB
可视化比例
![]() |
---|
可视化比例 - 速记图作者 @nitya |
在本课中,你将使用一个以自然为主题的数据集来可视化比例,例如在一个关于蘑菇的数据集中有多少种不同类型的真菌。让我们通过一个来自 Audubon 的数据集来探索这些迷人的真菌,该数据集列出了 Agaricus 和 Lepiota 家族中 23 种有鳃蘑菇的详细信息。你将尝试一些有趣的可视化方法,例如:
- 饼图 🥧
- 环形图 🍩
- 华夫图 🧇
💡 一个非常有趣的项目 Charticulator 由微软研究院开发,提供了一个免费的拖放界面用于数据可视化。在他们的一个教程中也使用了这个蘑菇数据集!因此你可以同时探索数据并学习这个库:Charticulator 教程。
课前测验
了解你的蘑菇 🍄
蘑菇非常有趣。让我们导入一个数据集来研究它们:
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
一个表格打印出来,包含一些很棒的分析数据:
类别 | 帽型 | 帽表面 | 帽颜色 | 是否有瘀伤 | 气味 | 鳃连接方式 | 鳃间距 | 鳃大小 | 鳃颜色 | 茎形状 | 茎根 | 环上方茎表面 | 环下方茎表面 | 环上方茎颜色 | 环下方茎颜色 | 面纱类型 | 面纱颜色 | 环数量 | 环类型 | 孢子印颜色 | 种群 | 栖息地 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
有毒 | 凸形 | 光滑 | 棕色 | 有瘀伤 | 刺鼻 | 自由 | 紧密 | 狭窄 | 黑色 | 扩大 | 等长 | 光滑 | 光滑 | 白色 | 白色 | 部分 | 白色 | 一个 | 垂饰 | 黑色 | 分散 | 城市 |
可食用 | 凸形 | 光滑 | 黄色 | 有瘀伤 | 杏仁味 | 自由 | 紧密 | 宽广 | 黑色 | 扩大 | 棍状 | 光滑 | 光滑 | 白色 | 白色 | 部分 | 白色 | 一个 | 垂饰 | 棕色 | 众多 | 草地 |
可食用 | 钟形 | 光滑 | 白色 | 有瘀伤 | 茴香味 | 自由 | 紧密 | 宽广 | 棕色 | 扩大 | 棍状 | 光滑 | 光滑 | 白色 | 白色 | 部分 | 白色 | 一个 | 垂饰 | 棕色 | 众多 | 草地 |
有毒 | 凸形 | 鳞片状 | 白色 | 有瘀伤 | 刺鼻 | 自由 | 紧密 | 狭窄 | 棕色 | 扩大 | 等长 | 光滑 | 光滑 | 白色 | 白色 | 部分 | 白色 | 一个 | 垂饰 | 黑色 | 分散 | 城市 |
你会立即注意到所有数据都是文本格式。为了在图表中使用这些数据,你需要将其转换。事实上,大部分数据是以对象形式表示的:
print(mushrooms.select_dtypes(["object"]).columns)
输出为:
Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
'stalk-surface-below-ring', 'stalk-color-above-ring',
'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
'ring-type', 'spore-print-color', 'population', 'habitat'],
dtype='object')
将这些数据转换为类别,例如将“类别”列转换为分类:
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
现在,如果打印出蘑菇数据,你会看到它已经根据有毒/可食用类别分组:
帽型 | 帽表面 | 帽颜色 | 是否有瘀伤 | 气味 | 鳃连接方式 | 鳃间距 | 鳃大小 | 鳃颜色 | 茎形状 | ... | 环下方茎表面 | 环上方茎颜色 | 环下方茎颜色 | 面纱类型 | 面纱颜色 | 环数量 | 环类型 | 孢子印颜色 | 种群 | 栖息地 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
类别 | |||||||||||||||||||||
可食用 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 |
有毒 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 |
如果按照此表中呈现的顺序创建类别标签,你可以绘制一个饼图:
饼图!
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
瞧,一个饼图展示了根据蘑菇的两种类别(有毒/可食用)数据的比例。这里正确设置标签的顺序非常重要,因此务必验证标签数组的构建顺序!
环形图!
环形图是一种更具视觉吸引力的饼图,它在中间有一个空洞。让我们用这种方法查看数据。
看看蘑菇生长的各种栖息地:
habitat=mushrooms.groupby(['habitat']).count()
habitat
这里,你将数据按栖息地分组。共有 7 种栖息地,因此使用这些作为环形图的标签:
labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']
plt.pie(habitat['class'], labels=labels,
autopct='%1.1f%%', pctdistance=0.85)
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()
fig.gca().add_artist(center_circle)
plt.title('Mushroom Habitats')
plt.show()
这段代码绘制了一个图表和一个中心圆,然后将中心圆添加到图表中。通过将 0.40
更改为其他值来编辑中心圆的宽度。
环形图可以通过多种方式调整标签。特别是标签可以被突出显示以提高可读性。了解更多信息请参阅 文档。
现在你已经知道如何分组数据并将其显示为饼图或环形图,你可以探索其他类型的图表。试试华夫图,这是一种不同的方式来探索数量。
华夫图!
华夫图是一种以二维方块阵列可视化数量的图表。尝试可视化数据集中蘑菇帽颜色的不同数量。为此,你需要安装一个辅助库 PyWaffle 并使用 Matplotlib:
pip install pywaffle
选择一段数据进行分组:
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
通过创建标签并分组数据来创建华夫图:
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
'amount': capcolor['class']
}
df = pd.DataFrame(data)
fig = plt.figure(
FigureClass = Waffle,
rows = 100,
values = df.amount,
labels = list(df.color),
figsize = (30,30),
colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)
使用华夫图,你可以清楚地看到蘑菇数据集中帽颜色的比例。有趣的是,有许多绿色帽子的蘑菇!
✅ PyWaffle 支持在图表中使用图标,这些图标可以是 Font Awesome 中的任何图标。尝试使用图标代替方块来创建更有趣的华夫图。
在本课中,你学习了三种可视化比例的方法。首先,你需要将数据分组为类别,然后决定哪种方式最适合展示数据——饼图、环形图或华夫图。所有这些方法都能让用户快速了解数据集。
🚀 挑战
尝试在 Charticulator 中重新创建这些有趣的图表。
课后测验
复习与自学
有时不容易决定何时使用饼图、环形图或华夫图。以下是一些相关的文章:
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
进行一些研究以找到更多关于这个选择的信息。
作业
免责声明:
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。