【数据可视化-02】Seaborn图形实战宝典

Seaborn介绍

  Seaborn是一个基于Python的数据可视化库,它建立在matplotlib的基础之上,为统计数据的可视化提供了高级接口。Seaborn通过简洁美观的默认样式和绘图类型,使数据可视化变得更加简单和直观。它特别适用于那些想要创建具有吸引力且信息丰富的统计图形的数据科学家和数据分析师。

  Seaborn的主要特点包括:

  1. 集成性:Seaborn与pandas数据结构紧密结合,使得数据分析和可视化可以无缝衔接。
  2. 美观性:Seaborn提供了精心设计的默认样式和调色板,使得图形更具吸引力。
  3. 统计绘图:Seaborn提供了多种统计图形,如箱线图、小提琴图、热力图等,这些图形可以直观地展示数据的分布和关系。
  4. 数据分布可视化:通过核密度估计(KDE)和联合图(jointplot)等工具,Seaborn可以方便地展示数据的分布和相关性。
  5. 高度可定制性:虽然Seaborn提供了美观的默认样式,但用户仍然可以轻松地调整图形的各个方面,以满足特定的需求。

  seaborn官方给出为了常用图形的案列,具体参看seaborn官方示例文档
在这里插入图片描述

  Seaborn是一个基于matplotlib的数据可视化Python库,它提供了一种高级界面,用于绘制有吸引力的统计图形。下面是一些使用Seaborn绘制常见图形的示例:
  因为seaborn并是一个绘图库,它与DataFrame对象有很好的集成。

import pandas as pd
import seaborn as sns 
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
sns.set(style="white",font_scale=1.5)
sns.set(rc={"axes.facecolor":"#FFFAF0","figure.facecolor":"#FFFAF0"})
sns.set_context("poster",font_scale = .7)
import warnings
warnings.filterwarnings('ignore')
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 指定默认字体:解决plot不能显示中文问题
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题pd.set_option("display.max.columns",None)iris = sns.load_dataset('iris')
tips = sns.load_dataset('tips')
titanic = sns.load_dataset('titanic') 

一、 折线图 (Line Plot) lineplot线型图

sns.lineplot(x='sepal_length',y='sepal_width',data=iris)
plt.title("iris中sepal_length和sepal_width关系图")
#进行分组
sns.lineplot(x='sepal_length',y='sepal_width',data=iris,hue='species')
#按性别分组
sns.lineplot(x='total_bill',y='tip',data=tips,hue='sex')# style = 'time'
sns.lineplot(x='total_bill',y='tip',data=tips,hue='sex',size='smoker',style='time')

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、 直方图 (Histogram)

   histplot和displot在显示一个维度时,效果时一致的;

# 使用Seaborn绘制直方图
sns.histplot(tips['tip'], bins=30)#kde 是否显示数据分布曲线 默认值是False
#设置风格样式
sns.set(style='white')
sns.displot(tips['tip'],bins=30,kde=True)

在这里插入图片描述
在这里插入图片描述

三、 饼图 (Pie Chart)

  虽然Seaborn没有直接的饼图函数,但你可以使用matplotlib来绘制:

# 计算每个类别的百分比
sizes = iris['species'].value_counts(normalize=True) * 100
labels = sizes.index# 使用matplotlib绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.axis('equal')  # 确保饼图是圆的
plt.show()

在这里插入图片描述

四、 散点图 (Scatter Plot)

sns.scatterplot(data=tips,x='total_bill',y='tip')
#size参数指定点的大小
sns.scatterplot(data=tips,x='total_bill',y='tip',size='size')
#hue 按是否吸烟进行分组
sns.scatterplot(data=tips,x='total_bill',y='tip',size='size',hue='smoker')
#保存图片
from matplotlib import pyplot as plt
sns.scatterplot(data=tips,x='total_bill',y='tip',size='size',hue='smoker',style='time')
plt.savefig('scatterplot.jpg')

在这里插入图片描述
在这里插入图片描述

五、 柱状图/条形图barplot 堆叠柱状图 (Stacked Bar Chart)

# 使用Seaborn绘制柱状图
#绘制条形图  barplot
sns.barplot(x='sex',y='survived',data=titanic)
#按船舱分组
sns.barplot(x='sex',y='survived',data=titanic,hue='class')**sns.barplot(data=df, x='category', y='value')
plt.show()

在这里插入图片描述
在这里插入图片描述

# importing all required librariesimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as plt# creating dataframedf = pd.DataFrame({'X': [1, 2, 3],'Y': [3, 4, 5],'Z': [2, 1, 2]})# creating subplotsax = plt.subplots()# plotting columnsax = sns.barplot(x=df["X"], y=df["Y"], color='b')ax = sns.barplot(x=df["X"], y=df["Z"], color='r')# renaming the axesax.set(xlabel="x-axis", ylabel="y-axis")# visualizing illustrationplt.show()

在这里插入图片描述

六、 箱形图 (Box Plot)

#绘制盒图 boxplot
sns.boxplot(x='day',y='total_bill',data=tips)
#按时间time分组
sns.boxplot(x='day',y='total_bill',data=tips,hue='time')

在这里插入图片描述
在这里插入图片描述

七、 小提琴图 (Violin Plot)

  小提琴图是箱图和密度图的一种结合图形。左右越宽代表当前数据 量越密集。

sns.violinplot(x='day',y='total_bill',data=tips)
#按性别分组
sns.violinplot(x='day',y='total_bill',data=tips,hue='sex')
#男生女生合到一块
sns.violinplot(x='day',y='total_bill',data=tips,hue='sex',split=True)
#去掉中间线
sns.violinplot(x='day',y='total_bill',data=tips,hue='sex',split=True,inner=None)

在这里插入图片描述
在这里插入图片描述

八、 ** stripplot(分布散点图)**


#绘制分布散点图  stripplot()
sns.stripplot(x='day',y='total_bill',data=tips)
#jitter 震动 默认是True
sns.stripplot(x='day',y='total_bill',data=tips,jitter=False)

在这里插入图片描述

九、 swarmplot(分簇散点图)

sns.swarmplot(x='day',y='total_bill',data=tips)
#按性别分组
sns.swarmplot(x='day',y='total_bill',data=tips,hue='sex')
#按时间分组
sns.swarmplot(x='day',y='total_bill',data=tips,hue='time')

在这里插入图片描述

十、 热力图 (Heatmap)

   热力图(heatmap)是以矩阵的形式表示,数据值在图形中以颜色 的深浅来表示数量的多少,并可以快速到到大值的与最小值所在位 置。在机器学习的分类中经常用来作混淆矩阵的比较。

#导入模块
import numpy as np
import seaborn as sns
#加载航班数据
flights = sns.load_dataset('flights')
#pivot 是DataFrame中的一个函数
data = flights.pivot('month','year','passengers')
#绘制热力图
sns.heatmap(data=data)
#参数 annot :True
sns.heatmap(data=data,annot=True)
#以整数的形式显示
sns.heatmap(data=data,annot=True,fmt='d')
#去掉右侧图例
sns.heatmap(data=data,annot=True,fmt='d',linewidths=0.5,cbar=False)
#修改色系
sns.heatmap(data=data,annot=True,fmt='d',linewidths=0.5,cbar=False,cmap='YlGnBu')

在这里插入图片描述

十一、 配对图 (Pair Plot)

import seaborn as sns
import matplotlib.pyplot as pltdf = sns.load_dataset('iris')# 绘制配对图
sns.pairplot(df, hue='species')
plt.show()

在这里插入图片描述

十二、 回归分析图

  线性回归图通过大量数据找到模型拟合线性回归线。

#lmplot()
sns.lmplot(data=iris,x='petal_length',y='petal_width')
#regplot()
sns.regplot(data=iris,x='petal_length',y='petal_width')

在这里插入图片描述

十三、 jointplot

  joint意为联合,顾名思义jointplot是一个双变量分布图表接口。绘图结果主要有三部分:绘图主体用于表达两个变量对应的散点图分布,在其上侧和右侧分别体现2个变量的直方图分布
在这里插入图片描述

十四、 pointplot点图

#加载模块
import seaborn as sns
#加载数据
titanic = sns.load_dataset('titanic')
#绘制点图
sns.pointplot(data=titanic,x='sex',y='survived')
#hue 进行分组
sns.pointplot(data=titanic,x='sex',y='survived',hue='class')

在这里插入图片描述

Seaborn总结

  Seaborn是一个功能强大且易于使用的数据可视化库,它特别适合数据科学家和数据分析师使用。通过Seaborn,用户可以轻松创建各种统计图形,以直观地展示数据的分布、关系和趋势。Seaborn与pandas的紧密结合使得数据分析和可视化可以无缝衔接,从而提高了工作效率。

  此外,Seaborn的默认样式和调色板使得图形更具吸引力,同时也提供了高度的可定制性,用户可以根据需要调整图形的各个方面。这些特点使得Seaborn成为数据可视化领域的佼佼者之一。

  然而,需要注意的是,虽然Seaborn提供了许多高级功能,但它仍然是基于matplotlib构建的。因此,对于想要深入了解数据可视化底层原理的用户来说,掌握matplotlib仍然是非常重要的。同时,Seaborn的某些高级功能可能需要一定的统计学知识才能充分理解和使用。

  总之,Seaborn是一个强大而易于使用的数据可视化库,它可以帮助用户轻松地创建各种统计图形,以直观地展示数据的分布、关系和趋势。无论是数据科学家还是数据分析师,都应该掌握Seaborn的基本用法和高级功能,以提高数据分析和可视化的效率和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始学RSA: [WUSTCTF2020]情书等5题

1 [WUSTCTF2020]情书 题目 Premise: Enumerate the alphabet by 0、1、2、..... 、25 Using the RSA system Encryption:0156 0821 1616 0041 0140 2130 1616 0793 Public Key:2537 and 13 Private Key:2537 and 937flag: wctf2020{Decryption}解题 前提:用0、…

高效、精准:皮秒激光切割机在陶瓷基板加工中的应用

皮秒激光切割机(激光划片机)在陶瓷基板切割领域具有显著的优势和潜力,主要体现在以下几个方面: 1. 高精度:皮秒激光切割机能够实现极高的切割精度,对于陶瓷基板这种需要精细加工的材料尤为重要。它能够在不…

【网络原理】IP协议详解

一.与IP协议相关的基本概念 IP协议,即网际互连协议(Internet Protocol),是TCP/IP体系中的核心网络层协议。 网络层IP协议解决的问题 数据传输的过程中,不是直接进行的传输,而是经过层层的封装和分用的过程才能到达对端. IP协议主…

13 【PS作图】人物绘画理论-脸型

三庭五眼 三庭:脸的长度比例 (1)发际线到眉毛 (2)眉毛到鼻底 (3)鼻底到下巴 三个部分大致为三等分 五眼:脸的宽度比例 以眼睛长度为单位,把脸的宽度分成五等分&#x…

day1Qt作业

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->resize(540,415);//窗口大小this->setFixedSize(540,415);//固定窗口大小this->setWindowTitle("QQ");//标题this->setWindowIcon(QIcon("E:\\hqyjap…

大数据在互联网领域的“九大”应用

当下越来越多的应用涉及到大数据,而这些大数据的属性,包括数量,速度,多样性等等都呈现出大数据不断增长的复杂性,所以大数据的分析方法在大数据领域就显得尤为重要,目前互联网大数据运用的九大领域&#xf…

网络演进技术演进:裸纤专线、SDH、MSTP+、OTN、PTN、IP-RAN

前言 文章主要介绍常见名词以及其在各自领域实现的功能价值。 01 裸纤 裸光纤(裸光纤)由运营商提供,是无中继的光纤线路,仅通过配线架连接。相比传统光纤,裸光纤提供纯粹的物理传输路径,无需额外网…

Linux字符设备驱动-详解与实操:驱动架构、设备树、Pinctrl子系统和GPIO子系统、platform、设备树下的platform

如何编写一个驱动程序: (1)确定主设备号 (2)定义自己的file_operations结构体: 包含对应的open(drv_open)/read(drv_read)等设备操作函数,需要到内核中去注册 (3)实现…

为什么需要自动化测试?自动化有哪些优势?

前言 自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。 虽然说会写自动化测试并不能说明你就很牛批,但是你不会的话,那么很抱歉,你…

力扣每日一题-拆炸弹-2024.5.5

力扣题目:拆炸弹 题目链接: 1652.拆炸弹 题目描述 代码思路 根据代码实现分为k等于0和k不等于0的情况。k等于0很容易处理,而k不等于0时,需要使用滑动窗口的方式来解决。先根据小于0或大于0确定一个窗口,然后移动,获…

【Mac】 DSync for mac(文件比较同步工具) v2.7安装教程

软件介绍 DSync是一款文件比较同步工具,通过简便的三步即可完成繁琐的比较、同步操作,您甚至可以通过跳过、删除或反转您选择的文件的复制方向来微调您的同步。这是在Mac上同步文件的最简单方法。 安装教程 1.打开安装包,将「DSync」拖到右…

YUM源仓库部署和NFS共享存储服务

一.YUM源仓库部署 1.YUM 概述 (1)是基于RPM软件包构建的软件更新机制 (2)可以自动解决依赖关系 (3)所有软件包有集中的YUM软件仓库提供 2.准备YUM源 (1)软件仓库的提供方式&…

个人直播/流媒体服务解决方案实践

目录 1. 说明 1.1 拓扑结构图 2. 准备工作 2.1 软硬件清单 3. 步骤 3.1 按上面的软硬件清单准备好材料 3.2 内网检查测试 3.3 透传到公网服务器 3.5 机顶盒配置 4. 总结 5. 参考 6. 后语 1. 说明 - 在本地局域网建立流媒体服务,并发布到公网服务器供终…

【Unity 组件思想-预制体】

【Unity 组件思想-预制体】 预制体(Prefab)是Unity中一种特殊的组件 特点和用途: 重用性: 预制体允许开发者创建可重复使用的自定义游戏对象。这意味着你可以创建一个预制体,然后在场景中多次实例化它,…

轻松上手的LangChain学习说明书

一、Langchain是什么? 如今各类AI模型层出不穷,百花齐放,大佬们开发的速度永远遥遥领先于学习者的学习速度。。为了解放生产力,不让应用层开发人员受限于各语言模型的生产部署中…LangChain横空出世界。 Langchain可以说是现阶段…

快速了解Oracle 数据库 23ai

Oracle Database 23ai 于2024年5月2日正式发布。快速了解可以看官网主页和官方博客。 官网主页 23ai的3个要点,核心都是数据: 数据的人工智能 主要指数据库内置机器学习和AI向量搜索。这实际是Oracle融合数据库策略的延续,避免了复杂的数据…

SparkStructuredStreaming状态编程

spark官网关于spark有状态编程介绍比较少,本文是一篇个人理解关于spark状态编程。 官网关于状态编程代码例子: spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredComplexSessionization.scala at v3.5.0 apache/spark (github…

电商企业案例:金蝶云星空对接易仓

案例背景 某跨境电商公司,作为行业的新锐力量,业务覆盖全球数十个国家,产品线丰富多样。随着业务量的激增,原有的信息孤岛问题日益凸显,导致订单处理延迟、库存管理混乱、物流效率低下。尤其是发货单、销售退件单等跨…

代码随想录训练营31day-动态规划4

一、完全背包(参考博客) 和01背包区别在于物品可以无限次放入背包。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 因此在需要在遍历顺序上进行区别,参考代码随想录: 二、518.零钱兑换II 题目求的是组…

尊享面试100(272.最接近的二叉树搜索值|| python)

刚开始想着用最小堆,把每个元素都加进去,然后找出最小的k个值,复杂度应该是(nklogn) import heapq as pq class Solution:def __init__(self):self.h []pq.heapify(self.h)def closestKValues(self, root: Optional[TreeNode], …