8k Star!基于 Matplotlib 的数据可视化利器

2026数据分析师学习指南:从SQL到机器学习实战路线 数据分析作为从海量信息中提取价值、驱动决策的核心技术,其原理在于通过统计学方法、数据挖掘算法和可视化工具,将原始数据转化为可操作的商业洞察。这项技术的价值在于能够帮助企业优化运营、预测趋势、识别风险,从而在电商、金融、营销等多个场景中实现数据驱动的科学决策。对于希望入门或转行的学习者而言,掌握一套系统、高效的学习路径至关重要。本文聚焦数据分析师必备的七大核心能力,特别是围绕SQL数据提取和Python数据处理两大关键技术,结合当前热门的实战项目与机器学习应用,提供了一份从零基础到具备求职竞争力的完整学习路线 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取

python免费学习资料、代码以及交流解答点击即可加入

【导语】:Seaborn 是一个可以实现数据可视化的 Python 库,它是基于 matplotlib 库封装而成的,同时还能兼容 pandas 数据结构。我们可以使用 Seaborn 来制作漂亮的数据图表,操作简单,易于上手。
提示:Seaborn 支持 Python 3.7+ ,已不再支持 Python 2。

简介

1、数据可视化的工具介绍

数据可视化是一种数据科学家将原始数据转化为图表的技术,这些图表能产生许多有价值的信息。图表降低了原始数据的复杂性,使用户更易理解。

有许多完成数据可视化的工具,例如 Tableau、Power BI、ChartBlocks以及其他的无代码工具。这些工具有着各自的用户,也都很强大。然而当我们需要一个良好的平台来处理原始数据时,python 不失为一个好的选择。

虽然这种方法较为复杂,需要的编程知识也更多,但 python 能通过许多操作和转换来完成数据可视化,因此对数据科学家来说是一个理想的选择。Python 最大的一个优点就是它拥有强大的第三方库,来处理数据,比如numpy、pandas、matplotlib、tensorflow。

Matplotlib可能是目前最受认可的绘图库了,不仅适用于python,还适用于R语言等。它的定制化和可操作性使其坐上了头把交椅。然而当使用 matplotlib 时,有些定制化和操作功能很难实现。

基于 matplotlib,开发者创造了一个叫 seaborn 的库。seaborn 与 matplotlib 一样强大,在带来一些新特性的同时还能简化绘图。

在本文中,我们主要关注如何使用 seaborn 绘制高级的图表。你可以依据这些例子创建自己的图表。

2. Seaborn是什么?

 

Seaborn是 python 中一个可以制作数据图表的库。它是 matplotlib 库的高级封装,同时还能兼容 pandas 数据结构。

Seaborn 能让你快速探索并理解数据。seaborn 的工作方式为:首先捕捉包含所有数据的整个数据结构或数组,随后通过执行绘图和统计数据需要的所有内部函数,将数据转换为信息图。

当你根据自身需求设计图表时,seaborn 能减少复杂性。

Seaborn 的Github主页:
https://github.com/mwaskom/seaborn

 

安装

pip install seaborn

当安装seaborn时,也会自动安装其他绘图所需要的库,例如 matplotlib,pandas、numpy 和 scipy。此外,在写代码绘图前,我们需要导入一些模块。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

简单使用

1. 绘制你的第一个图表

由于网络问题,在国内使用seaborn的数据集时,注意启用代理,以免无法加载数据集。

在我们开始画图之前,需要使用数据。seaborn的方便之处在于它兼容pandas数据结构。此外,该库自带了 一些内建数据集,你可以直接用代码加载,无需手动下载文件。让我们一起来看看如何加载一个包含航班信息的数据集:

flights_data = sns.load_dataset("flights")
res = flights_data.head()
print(res)

输出结果如下:


当调用load_dataset函数并写入数据集的名称后,神奇的事情发生了,控制台返回了一个数据结构。所有的数据集在这里可见:
Github链接:
https://github.com/mwaskom/seaborn-data

 

2. 散点图

散点图是一个基于二维数据来显示点的图表。用 seaborn 库来绘制一个散点图只需要几行代码,非常简单。scatterplot 需要的参数是我们绘图需要的数据集,以及x,y轴分别代表什么数据。

flights_data = sns.load_dataset("flights")
sns.scatterplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

 

散点图

散点图

3. 线条图

根据连续或分类数据的变化,画出线条图。它是一种流行且广为人知的图表,易于绘制。与之前相似,我们使用lineplot函数, 指定数据集,以及x,y轴分别代表哪一列数据。seaborn会完成剩余的工作:

flights_data = sns.load_dataset("flights")
sns.lineplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

 

线条图

线条图

4. 条形图

正如你所推测的那样,条形图可能是最出名的图表类型了。与散点图和线条一样,我们可以用barplot函数绘制条形图:

flights_data = sns.load_dataset("flights")
sns.barplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

 

条形图

条形图

5. 用matplotlib扩展

seaborn建立在matplotlib之上,扩展了它的功能,增加了复杂性。如其所述,却并没有限matplotlib的性能。任何seaborn图表都可以用matplotlib的函数绘制。seaborn在特定的操作中可以提供帮助,允许seaborn利用matplotlib的力量而无需重写函数。例如你如果想用seaborn来自动绘制多个图表,你就可以利用matplotlib中的subplot函数:

diamonds_data = sns.load_dataset('diamonds')
plt.subplot(1, 2, 1)
sns.countplot(x='carat', data=diamonds_data)
plt.subplot(1, 2, 2)
sns.countplot(x='depth', data=diamonds_data)
plt.show()

绘制的图表如下:

 

用subplot画出的样本图

用subplot画出的样本图

 

使用subplot功能,我们可以在一个图上绘制多个图表。该函数有三个参数,第一个是行数,第二个是列数,最后一个是图号。我们使用matplotlib与seaborn中的函数,seaborn在每个subplot中绘制一个seaborn图表。

6. 绘制不同风格的漂亮图形

seaborn使我们可以更改图形界面,它提供了五种不同的风格:darkgrid,whitegrid,dark,white,和ticks.

第一个例子深色网格图:

flights_data = sns.load_dataset("flights")
sns.set_style("darkgrid")
sns.lineplot(data = flights_data, x = "year", y = "passengers")
plt.show()

绘制的图表如下:

 

深色网格样本图

深色网格样本图

 

另一个例子白色网格图:

flights_data = sns.load_dataset("flights")
sns.set_style("whitegrid")
sns.lineplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

 

白色网格样本图

白色网格样本图

很酷的用法

1. 下载小费数据集

我们了解seaborn的基本知识后,现在让我们通过在同一数据集上构建多个图表,来进行练习。在我们的例子中,我们将 使用数据集“tips”,你可以使用seaborn直接下载。首先,加载数据集:

tips_df = sns.load_dataset('tips')
res = tips_df.head()
print(res)

输出结果如下:

 

 

我想打印出数据集的前几行,来了解列和数据本身。通常我会用一些pandas函数修复一些数据问题,比如null值,还可 以加入一些对数据集有用的信息。你可以在下面的链接中阅读更多信息:

pandas使用指南:

https://livecodestream.dev/post/how-to-work-with-pandas-in-python/

让我们在数据集中创建新的一列,以表示小费占总费用的百分比:

tips_df = sns.load_dataset('tips')
tips_df.head()
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
res = tips_df.head()
print(res)

新的数据结构如下:

 

2. 理解tip_percentage

让我们首先看看 tip_percentage 的分布。鉴于此,使用 hisplot 来产生柱状图:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
sns.histplot(tips_df["tip_percentage"], binwidth=0.05)
plt.show()

绘制的图表如下:

 

tip_percentage变化图

tip_percentage变化图

 

我们必须自定义 binwidth 属性以使其更具可读性,现在我们可以快速理解数据了。大多数客户会给15%至20%的小费,而有些情况下,小费超过70%。这些值是异常的,应该进行检查,以确定这些值是否出错。

3. 观察tip_percentage是否与每天的不同时刻是否有关,也将会很有趣:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
sns.histplot(data=tips_df, x="tip_percentage", binwidth=0.05, hue="time")
plt.show()

绘制的图表如下:

 

tip_percentage在一天不同时刻的变化图

tip_percentage在一天不同时刻的变化图

 

这次我们加载了所有数据集到图表中,而不仅仅是一列,然后给time列设置了hue属性。这将会使图表给每一个time值设置不同的颜色,并为其添加图例。

4. 一周中某天的小费数

另一个有趣的度量标准是根据一周中的某天,知道可以得到小费的总数:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
sns.barplot(data=tips_df, x="day", y="tip", estimator=np.sum)
plt.show()

绘制的图表如下:

 

tip_percentage在一周中不同天的变化图

tip_percentage在一周中不同天的变化图

 

看起来星期五很适合待在家里。

5. 桌子尺寸和日期对小费的影响

有时候我们想要知道多个变量如何共同影响输出。例如,星期几和桌子尺 寸怎样共同影响小费百分比?为了画出最终的图表,我们首先用pandas中的pivot函数预处理数据,随后绘制一个热点图:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
pivot = tips_df.pivot_table(
    index=["day"],
    columns=["size"],
    values="tip_percentage",
    aggfunc=np.average)
sns.heatmap(pivot)
plt.show()

绘制的图表如下:

 

tip_percentage随星期几和桌子尺寸的变化图

tip_percentage随星期几和桌子尺寸的变化图

结论

当然,我们还可以用 seaborn 做很多事情,通过查看官方文档能看到更多例子。感谢你的阅读!
官方文档地址:http://seaborn.pydata.org/

AI学习路线图:从零到就业的8-12个月实战指南 人工智能(AI)作为当今科技发展的核心驱动力,其底层原理是让机器从数据中学习规律并做出决策。机器学习是实现这一目标的关键技术,它通过算法模型自动发现数据中的模式。深度学习作为机器学习的重要分支,凭借神经网络强大的表征学习能力,在计算机视觉、自然语言处理等领域取得了突破性进展。这些技术的核心价值在于将数据转化为智能,解决复杂的现实世界问题,广泛应用于推荐系统、自动驾驶、智能客服等场景。本文聚焦于**AI学习路线图**的构建,旨在为初学者提供一条清晰的、分阶段的成长路径,涵盖从编程与数学基础,到机器学习与深度学 阅读详情

相关推荐

AI大模型学习路线图:从零基础到实战开发的完整指南

机器学习作为人工智能的核心技术,通过让计算机从数据中学习规律,而非依赖硬编码规则,实现了从传统算法到智能决策的跨越。其核心原理在于特征提取与模型训练,通过梯度下降等优化算法不断调整参数以最小化损失函数。这一技术价值在于能够处理复杂、非结构化的数据,为各行各业提供智能化解决方案。在自然语言处理(NLP)领域,机器学习与深度学习技术催生了Transformer架构,它摒弃了传统的循环结构,完全依赖自注意力机制,实现了高效的并行计算和强大的长程依赖建模,成为现代大模型的基石。基于此,开发者可以进一步学习大模型微调

weixin_30553777的博客 365

数据挖掘各流程中常用方法总结(一)

在完成两个kaggle竞赛的教学项目之后,对数据挖掘过程中的常用方法和基本原则有所体会,特此记录,方便今后复习整理。

Cloud_Flow的博客 1126

数学建模竞赛:从资料库构建到实战求解的系统化备赛指南

数学建模是运用数学工具解决实际问题的核心方法,其原理在于通过抽象、假设和构建模型来模拟复杂系统。在工程实践与科研中,数学建模的价值在于将模糊的现实问题转化为可量化、可计算、可优化的科学问题。其应用场景广泛,覆盖物流优化、金融预测、资源调度等多个行业领域。本文聚焦于数学建模竞赛的实战流程,深入探讨如何高效利用**Python编程**与**优化算法**等关键技术,构建从赛题解析、模型构建、算法实现到论文撰写的完整技术闭环,旨在帮助参赛者将零散资料转化为系统性解题能力,从而在有限时间内产出高质量解决方案。

weixin_34268843的博客 339

python统计分析——直方图(sns.histplot)

当bins为文本时,表示作图时的分组策略,可用选项具体有:'auto', 'fd', 'doane','scott', 'stone', 'rice', 'sturges', 'sqrt'。(13)common_norm=True, 当分组数据作图,stat设置为‘percent’或‘density’时,如果设置为True,表示按整体进行汇总转换,当设置为False时,表示按各组自己的数据汇总转换。(16)fill=True, 用于设置条形图是否有填充,默认为True,下图为设置为False的展示。

maizeman126的博客 1万+

Python-简单的使用PythonAPI封装器来使用matplotlib

简单的使用Python API封装器来使用matplotlib, plotly, bokeh等绘制图表

视觉语言模型对抗攻击与防御:从传统方法到多模态挑战

本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。

weixin_29231725的博客 392

sns.histplot绘制直方图与偏分图,plot绘制正态图

sns.histplot绘制直方图与偏分图,plot绘制正态图

qq_43985140的博客 1667

学习 考证 帆软 FCP-FineBI V6.0 考试经验

参加这个学习班,认识了新朋友,可能是我职业生涯中的一次重要体验,其实大家想想 IT 和 医生一样都是需要终身学习的。只是医生学习周期更长但是回报率也更高。大家觉的呢?

小 tom的博客 6225

task2_数据分析

载入各种数据科学与可视化库 #导入warnings包,利用过滤器来实现忽略警告语句。 import warnings warnings.filterwarnings('ignore') import missingno as msno import pandas as pd from pandas import DataFrame import matplotlib.pyplot as plt import seaborn as sns import numpy as np 载入训练集和测试集 #导入训

老三的博客 283

LTspice仿真实战:共模电感差模/共模插入损耗测试全流程(附WE 744821201参数)

本文以Würth Elektronik 744821201型号共模电感为例,详细介绍了在LTspice中搭建差模与共模插入损耗测试电路的全流程。通过从规格书提取关键参数、构建SPICE模型,到执行仿真并与官方数据对比,旨在帮助硬件工程师在PCB设计前期精准预测EMC性能,弥合器件选型与系统设计之间的鸿沟。

info6的博客 761

VS2022如何兼容老项目?.NET Framework 4.0/4.5安装避坑指南

本文提供了在Visual Studio 2022中兼容和维护.NET Framework 4.0/4.5等老旧项目的完整解决方案。针对VS2022无法直接识别旧框架的核心问题,文章详细剖析了原因,并重点推荐通过官方NuGet包安全获取引用程序集的方法,给出了从下载、解压到部署至标准目录的详细步骤。同时,文章还深入探讨了项目文件格式过旧、NuGet包还原失败等进阶问题的排查与解决策略,旨在帮助开发者高效、稳定地在现代开发环境中维护历史代码库。

weixin_27734811的博客 514

【Seaborn】sns.histplot() 函数: 直方图绘制

seaborn.histplot()是seaborn提供的直方图绘制函数,基于matplotlib进行封装,相比plt.hist()更美观,并提供更丰富的功能,如KDE曲线、自动调整bin宽度、统计标准化等。语法:import seaborn as sns;sns.histplot(data, bins=10, kde=False, stat="count", color=None, element="bars", multiple="layer")。bins控制柱子数量,kde=True添加密度曲线。

彬彬侠的博客 2992

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

【Qwt 7.0 系列】常用图表类型实战 —— 柱状图、散点图、箱线图与直方图

本文是Qwt 7.0系列的第3篇,重点介绍了Qwt 7.0中四种常用图表的实现方法。文章首先指出Qwt 7.0相比原版Qwt 6.x在图表类型上的重要改进,包括柱状图接口增强、新增箱线图(Qwt 7.2.0)和散点图性能优化。随后详细讲解了柱状图的两种实现方式(QwtPlotBarChart和QwtPlotMultiBarChart)及其分组/堆叠模式,演示了数据设置、样式定制和布局调整的方法。文章还提到散点图的实现技巧,即通过QwtPlotCurve配合QwtSymbol来实现。这些内容为Qt开发者提供了

尘中远的程序开发记录 443

PCB线路板的制作工艺流程分享!2021-08-21

Pcb板制作工艺流程:开料-钻孔-沉铜-压膜-曝光-显影-电铜-电锡-退膜-蚀刻-退锡-光学检测-印阻焊油-阻焊曝光、显影-字符-表面处理-成型-电测-终检-抽测-包装。具体如下:1、开料(CUT) 将原始的覆铜板切割成可以用在生产线上制作的板子过程2、钻孔 使PCB板层间产生通孔,以达到连通层间的目的。 3、沉铜 经过钻孔后的线路板在沉铜缸内会发生氧化还原反应,形成铜层对孔进行孔金属化,使原来绝缘的基材表面沉积上铜,达到层间电性相通。 4、压膜 压膜后的PCB板上面压了一层蓝色的干膜, 干膜是一个载体

jdbpcb88的博客 3246

Qt Creator设计器里也能拖拽?5步将你的QML自定义控件变成可视化插件(Qt6.5+)

本文详细介绍了如何在Qt Creator设计器中实现QML自定义控件的可视化拖拽功能(Qt6.5+)。通过5个步骤,从构建可插件化的QML控件基础到部署插件到设计器环境,帮助开发者将自定义控件转化为设计器插件,提升团队协作效率。特别适合需要频繁调整UI样式的开发场景。

weixin_29214559的博客 171

数据可视化之his图和Q-Q图

PS:`stats.norm.ppf`是SciPy库中的一个函数,用于计算正态分布的百分位点(也称为分位数)`stats.norm.ppf(q, loc=0, scale=1)`用于计算给定累积概率`q`下的正态分布的百分位点。函数返回的结果是给定累积概率下的对应百分位点的数值。PDF:概率密度函数(probability density function), 在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简称为密度函数)是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。

weixin_72100405的博客 775

YOLO系列算法改进 | C3k2改进篇 | 融合DEConv细节增强卷积模块 | 细节增强+多分支差分卷积融合,标准卷积的完美涨点替代! | TIP 2024

YOLO系列算法改进 | C3k2改进篇 | 融合DEConv细节增强卷积模块 | 细节增强+多分支差分卷积融合,标准卷积的完美涨点替代! | TIP 2024 (以YOLO26最新目标检测模型为基础,融合C3k2_DEConv创新模块进行改进)

2502_91881744的博客 310

【Python画图】Seaborn绘制直方图(histogram)(使用histplot) 以及 如何调整背景,修改图形颜色,添加文字注释等

如题。先给效果图,然后给代码,最后给详细参考。

the Blog of 等不到天亮丶等时光 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数据处理Seaborn库

sns.boxplot(data = ...,x = ...,y =...)或sns.catplot(data = ...,x = ...,y = ...,kind = “box ”)sns.displot(data = ...,x = ...,kind = “kde”)或sns.kdeplot(data = ...,x = ...)sns.hisplot(data = ...,x = ...)或sns.displot(data = ...,x = ...)3.说明:可以添加参数hue,表示不同颜色;

2302_79759425的博客 817

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据处理与统计分析——11-Pandas-Seaborn可视化

显示数据的分位数及异常值。

m0_74893204的博客 1402

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据分析——seaborn可视化(笔记自用)

seaborn可视化,自用的笔记。详细请移步我参考的b站视频:https://www.bilibili.com/video/BV1VX4y1F76x?share_source=copy_pc

m0_52974810的博客 6180

python用sns.histplot求概率密度图,解决概率密度和不为1的问题

python用sns.histplot求概率密度图,解决概率密度和不为1的问题

weixin_46713695的博客 4805

【matplotlib】对matplotlib加工封装的折线图和柱状图

最近使用matplotlib中折线图和柱状图比较多,但是每次都要添加数据标签和坐标轴等等很麻烦,所以加工封装了一下matplotlib,方便调用。

wwqnmdhmp的博客 603

sns.regplot 和 sns.distplot你知道多少

sns.regplot和sns.distplot这两个图形的使用场景记录。 sns.regplot 用来比较两个变量的关系,是否符合线性回归。一般用来比较特征变量和标签变量上。 sns.distplot 是直方图和核密度图(sns.kdeplot)的结合。用来看单个连续型变量的分布。 顺便说下直方图和条形图区别: 直方图:先分箱,然后计算每个分箱频数的数据分布。直方图一般用于数字特征(连续型); 条形图一般用于类别特征,条形图有间距,直方图没有。 先用小费数据集画出图形。 # 导入包 import se

pythonxiaopeng的博客 1万+
上一篇: Python爬取新浪微博评论
下一篇: 3种Python数据结构,13种创建方法,这个总结,超赞!
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值