首页 >后端开发 >Python教程 >Seaborn 绘图选择变得简单:如何有效地可视化您的数据

Seaborn 绘图选择变得简单:如何有效地可视化您的数据

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-30 13:40:111009浏览

数据可视化是分析和呈现数据最强大的工具之一。 Seaborn 是一个基于 Matplotlib 构建的 Python 库,提供了用于创建信息丰富且多样化的可视化的高级接口。本文将指导您选择正确的 Seaborn 绘图、对其进行自定义以使其清晰,并避免常见的陷阱。

为什么选择正确的绘图类型很重要?

您选择的绘图类型直接影响数据呈现其见解和信息的有效性。

  • 散点图揭示了变量之间的相关性。

  • 热图简化了大规模比较。

使用错误的绘图类型可能会导致误解,有时,由于我们选择了错误的可视化,这些来自数据的见解被隐藏起来而永远不会被揭示。

了解 Seaborn 绘图类别

Seaborn 图分为三个主要类别:关系分布分类。以下是如何选择和使用它们。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
来源:https://seaborn.pydata.org/_images/function_overview_8_0.png

1. 关系图

关系图可视化两个变量之间的关系,通常是数值关系。 Seaborn 提供两种主要类型的关系图:散点图和线图。您可以使用relplot() 函数创建这些图。

sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")

或者你可以这样写:

fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal")

结果还是一样。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
来源:seaborn 文档

散点图显示各个数据点,可以轻松识别模式或相关性。另一方面,线图非常适合展示一段时间内或跨类别的趋势。

2. 分布图

了解变量的分布是分析或建模数据的关键的第一步。分布图旨在揭示单个变量的分布或离散度。这些可视化可以快速解决关键问题,例如:数据覆盖什么范围?其中心趋势是什么?数据是否向特定方向倾斜?

与关系图一样,可以使用 displot() 函数通过指定 kind 参数来选择所需的绘图类型来创建分布图。或者,您可以直接使用 histplot()、kdeplot()、ecdfplot() 或 rugplot() 等函数来实现特定的分布可视化。

histplot() 函数非常适合可视化频率分布。

sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
来源:seaborn 文档

kdeplot() 更适合显示平滑的分布曲线,而 ecdfplot() 则强调累积比例。 rugplot() 为原始数据点添加详细标记,以更精细的细节增强其他可视化效果。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

Seaborn 还支持使用 heatmap() 等工具可视化二元分布。热图对于说明相关矩阵或进行比较特别有效。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

3. 分类图

分类图旨在可视化按类别组织的数据。创建这些绘图的一般方法是使用 catplot() 函数,指定 kind 参数来选择所需的绘图类型。这些地块分为三个主要系列。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
选择正确的分类图类型取决于您要回答的具体问题。这些图提供了分析分类数据的多种视角:

- 分类散点图
这些图显示类别内的各个数据点,有助于识别模式或分布。示例包括 stripplot() 和 swarmplot()。

fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal")

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
来源:seaborn 文档

- 分类分布图

这些图总结了类别内的数据分布,提供了对变异性、分布和集中趋势的见解。示例包括 boxplot()、violinplot() 和 boxenplot()。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

- 分类估计图

这些图计算汇总估计值(例如平均值)并包含误差线以显示变异性或置信区间。示例包括 barplot()、pointplot() 和 countplot()。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

如何选择合适的 Seaborn 地块

在绘制之前,问自己这些问题:

数据是分类数据、数值数据还是两者兼而有之?

您在探索关系、分布或比较吗?

数据集的大小和比例是多少?

了解您的数据可以指导您使用最合适的可视化工具。下面的架构来自 Kaggle,展示了如何根据您拥有的数据类型选择图表。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively
来源:kaggle

让我们使用现实世界的数据来实现这一点。考虑来自 Kaggle 的数据集,其中包含 20 列,包括学习时间、出勤率、家长参与、资源获取、课外活动、睡眠时间、以前的分数、动机水平、互联网访问、辅导课程、家庭收入、教师质量、学校等特征类型、同伴影响、体力活动、学习障碍、父母教育水平、离家距离、性别和考试成绩。

  1. 了解您的数据 首先分析数据集中变量的类型以了解数据。数值变量最适合关系图或分布图,而分类变量则非常适合分组或比较。例如,您可以使用线图来分析基于出勤率的数学成绩趋势。同样,可以利用直方图来检查睡眠时间的分布,帮助确定大多数学生是否得到了足够的休息。
sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal")

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

  1. 定义你的目标 通过询问您想要传达什么见解来确定您的目标。想要比较组吗?选择分类图,例如条形图或箱线图。有兴趣探索人际关系吗?关系图(例如散点图)是一个不错的选择。想要了解变异性?使用像直方图这样的分布图。例如,散点图有效地显示两个数值变量之间的关系,每个点代表一个观察值。这样可以轻松发现相关性、聚类或异常值。可视化学习时间对考试成绩的影响可以揭示更多的学习时间是否与更高的分数相关。
sns.displot(penguins, x="flipper_length_mm", hue="sex", multiple="dodge")

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

  1. 将图与您的数据和目标相匹配 为您的数据和分析目标选择适当的图至关重要。正确的可视化可以让您有效地提取有意义的见解。例如,与直方图相比,线图更适合观察一段时间内的趋势。使用不正确的绘图可能会掩盖重要的模式或见解,甚至使丰富的数据集变得不太有用。例如,条形图非常适合比较不同家长参与程度的平均考试成绩。该图突出显示了跨类别的数值变量的平均值(或其他汇总统计数据),使其非常适合高级比较。
sns.relplot(
    data=tips,
    x="total_bill", y="tip", hue="smoker",>



<p><img src="https://img.php.cn/upload/article/000/000/000/173294521670198.jpg" alt="Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively"><br>
source: seaborn documentation</p>

<p>Alternatively, you can use the scatterplot() function directly for scatter plots, which produce the same result. For line plots, you can either use relplot() with kind="line" or the more direct lineplot() function.<br>
</p>

<pre class="brush:php;toolbar:false">fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", kind="line")

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

自定义 Seaborn 绘图的技巧

使用 plt.title()、plt.xlabel() 和 plt.ylabel() 等函数添加标题和标签,提高可视化的清晰度。要合并分类维度,请利用 Seaborn 中的色调属性,它允许您根据数据集中的特定列来区分数据点。使用 set_palette() 函数使用 Coolwarm、husl 或 Set2 等调色板自定义配色方案。此外,通过使用 sns.set_theme() 调整数据点的样式或大小并使用 plt.figure(figsize=(width, height)) 定义图形尺寸来区分数据点。

要避免的常见陷阱

为了通过数据可视化有效地传达见解,在提供足够的信息和避免绘图过度拥挤之间取得平衡至关重要。图表中过多的数据点可能会让观众不知所措,而细节不足可能会导致混乱。始终包含清晰的轴标签和图例,并确保可视化强调您想要强调的关键见解。

另一个常见问题是创建误导性的可视化效果。为了防止这种情况,请确保轴适当缩放以准确地表示数据。

Seaborn Plot Selection Made Easy: How to Visualize Your Data Effectively

结论

选择正确的 Seaborn 图是增强数据理解和有效传达见解的关键一步。适当的可视化可以揭示可能隐藏的模式、关系和趋势。通过使情节类型与您的数据结构和分析目标保持一致(无论是探索分布、关系还是比较),您可以确保故事讲述的清晰度和精确度。

数据可视化既是一门艺术,也是一门科学。不要犹豫,尝试不同的 Seaborn 情节来发现新的观点或完善您的见解。通过实践和创造力,您将能够充分利用 Seaborn 的潜力,将原始数据转化为引人注目的视觉叙述。

以上是Seaborn 绘图选择变得简单:如何有效地可视化您的数据的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn