01、引言
本文涵盖主题:基本柱状图、分组柱状图、核密度估计与堆叠柱状图、步进图与多边形图。
数据来源:
-
penguins.csv
-
tips.csv
使用工具:
-
Seaborn
-
Matplotlib
首先,确保已经安装了Python和pip包管理工具。然后,在命令行中执行以下命令来安装Seaborn库和Matplotlib库:
# seaborn库 :
pip install seaborn
# Matplotlib库:
pip install matplotlib
本期内容『数据+代码』已上传百度网盘。
关注公众号【小Z的科研日常】,后台回复关键词[柱状图]获取。
02、数据导入与准备
我们导入需要用到的数据集。代码中使用Pandas库来导入和预览数据。让我们来预览一下"penguins"数据集与"tips"数据集:
import pandas as pd
penguins = pd.read_csv("penguins.csv")
tips = pd.read_csv("tips.csv")
print(penguins.head())
print(tips.head())
03、基本柱状图
在这一部分,我们将介绍如何绘制基本的柱状图。代码中使用了histplot函数来绘制柱状图,通过指定x参数,可以绘制出柱状图,本段代码使用penguins数据集。
#插入代码块:基本柱状图2
sns.set_palette("Paired")
sns.histplot(data=penguins,
x="flipper_length_mm",
binwidth=3)
plt.grid(False)
plt.show()
应用场景:
-
比较不同类别的数量、频率或分布情况。
-
可以用于离散数据的直观展示。
-
显示类别之间的趋势和变化。
优点:
-
直观易懂,适合初学者。
-
有效地呈现了类别之间的差异和变化。
-
方便与其他图表进行对比和联合分析。
缺点:
-
不适合展示连续数据的分布情况。
-
当类别过多时,柱状图会显得拥挤不清晰。
04、分组柱状图
在这一部分,我们将介绍如何绘制分组柱状图。代码中使用Seaborn的hue参数来实现按照"species"字段进行分组,并绘制数据集中不同种类企鹅的翼长柱状图。(可使用自己的数据集,调整字段名称即可)
#插入代码块:分组柱状图
sns.set_palette("Dark2")
sns.histplot(data=penguins,
x="flipper_length_mm",
hue="species")
plt.grid(False)
plt.show()
#插入代码块:分组柱状图2
sns.histplot(data=tips,
x ="day", hue="sex",
shrink=0.8, multiple="dodge")
plt.grid(False)
plt.show()
应用场景:
-
比较不同类别中多个变量的差异。
-
可以同时显示类别间和组内的差异,有助于观察整体趋势和细节。
-
可以用于对比类别内部多个子类别的指标。
优点:
-
显示了多个类别和组内差异的直观展示。
-
适用于多维度数据的分析和展示。
缺点:
-
当数据量很大时,图表可能变得复杂不易理解。
-
不适合展示连续数据的分布情况。
05、核密度与堆叠柱状图
在这一部分,我们将介绍核密度估计图和堆叠柱状图的绘制方法。
5.1核密度估计图
#插入代码块:带有核密度估计的直方图
sns.set_palette("BuGn_r")
sns.histplot(data=penguins,
x="flipper_length_mm",
binwidth=3,
kde=True)
plt.grid(False)
plt.show()
#插入代码块:核密度估计图2
sns.histplot(data=penguins,
x="flipper_length_mm",
hue="species",
element="step",
stat="density",
common_norm=False)
plt.grid(False)
plt.show()
核密度估计图应用场景:
-
展示连续数据的分布情况,可用于观察数据的整体分布特征。
-
相对于直方图,核密度估计图更平滑,能够更好地展示数据的连续性。
优点:
-
适用于连续数据的分布展示。
-
比直方图更平滑,更好地展现分布的连续性。
缺点:
-
不适合展示离散数据的分布情况。
5.2堆叠柱状图
#插入代码块:堆叠柱状图
sns.set_palette("Dark2")
sns.histplot(data=penguins,
x="flipper_length_mm",
hue="species",
multiple="stack")
plt.grid(False)
plt.show()
堆叠柱状图应用场景:
-
展示不同类别中多个子类别的数量或频率差异,同时显示各子类别的组成比例。
-
可以用于展示随时间或其他维度的变化趋势。
优点:
-
显示了类别中各子类别的组成比例。
-
可以用于对比类别内部多个子类别的指标。
缺点:
-
当类别过多时,图表会显得拥挤不清晰。
06、步进图和多边形图
6.1步进式堆叠直方图
#插入代码块:步进式堆叠直方图
sns.histplot(data=penguins,
x="flipper_length_mm",
hue="species",
element="step")
plt.grid(False)
plt.show()
步进图应用场景:
-
展示连续数据的变化情况,特别是在观察变化趋势时较为有用。
-
适合比较不同类别或组别之间的变化情况。
优点:
-
适用于连续数据的变化展示。
-
显示了数据在不同类别或组别间的变化趋势。
缺点:
-
不适合展示离散数据的变化情况。
6.2多边形直方图
#插入代码块:多边形直方图
sns.histplot(data=penguins,
x="flipper_length_mm",
hue="species",
element="poly")
plt.grid(False)
plt.show()
多边形直方图应用场景与优缺点:
-
展示连续数据的变化情况,类似于线图,但用面积表示而不是线段。
优点:
-
适用于连续数据的变化展示。
-
面积表示更能凸显变化幅度,尤其适合多个数据系列的比较。
缺点:
-
不适合展示离散数据的变化情况。
07、二维直方图
#插入代码块:二维直方图
sns.histplot(penguins,
y="body_mass_g",
x="bill_depth_mm",
hue="species")
plt.grid(False)
plt.show()
适用场景:
-
用于探索两个数值变量之间的关系和分布情况。
-
适用于大规模数据的可视化。
优点:
-
直观地展示了两个数值变量之间的关系和分布情况。
-
适用于较大规模的数据,能有效显示数据点的密度情况。
-
可以快速发现两个变量之间的关联和分布特征。
缺点:
-
如果数据点较少或者有重叠,可能会导致信息显示不清晰,难以分辨。
关注微信公众号【小Z的科研日常】,后台回复关键词 [柱状图] 获取相关资料。