Python数据可视化工具——Seaborn

news2024/11/13 11:01:02

1 简介

Seaborn基于matplotlib,它在matplotlib的基础上进行了更高级的API封装,便于用户可以更加简便地做出各种有吸引力的统计图表。它还能够高度兼容numpy与pandas数据结构以及scipy与statsmodel等统计模式。用更简单的调用呈现更多图表
seaborn官网: http://seaborn.pydata.org/

2 基本设置

  1. 图表的外部的风格:整个图或者子图,图表的底纹
  2. 图表的内部的风格:标签、线条和其他
  3. 颜色的设置
#导入需要的包
import numpy as np
import pandas as pd
import scipy as stats
import matplotlib.pyplot as plt
import seaborn as sns

2.1seaborn绘图初体验

先看一下matplotlib绘图效果

def sinplot(flip = 1):
    x = np.linspace(0,14,100)
    for i in range(1,7):
        plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)
plt.figure(figsize = (6,4))
sinplot()
plt.show()

在这里插入图片描述

再来看看seaborn绘图效果

#seaborn.set(context = 'rotebook',style = 'darkgrid',palette = 'deep',font = 'sans-serif',
           font_scale = 1,color_codes = True,rc = None)
#set()函数可以设置背景色、风格、字型、字体等
sns.set()  #参数非常多,一般不用
plt.figure(figsize = (6,4))
sinplot()
plt.show()

在这里插入图片描述
两者直接形成对比,seaborn生成的图片色彩柔和,直接生成灰色背景、白色网格。

2.2图表风格

set_style() seaborn提供了5种默认的风格

  • darkgrid/whitegrid(深色带格子/白色带格子):更关注数值
  • dark/white:更关注整体趋势
  • ticks:强化刻度
sns.set_style('whitegrid')
plt.figure(figsize = (6,4))
sinplot()
plt.show()

在这里插入图片描述

#整个图的风格
sns.set_style('white')
plt.figure(figsize = (6,4))
sinplot()
plt.show()

在这里插入图片描述

2.3 图表坐标轴

seaborn.despine(fig = None,ax = None, top = True, rigth = True, left = False, bottom = False,offset = None, trim = False) top,right,left,bottom:布尔型,为True时不显示
offset: 与坐标轴之间的偏移
trim: 为True时,将坐标轴限制在数据的最大最小值之间

#设置风格
sns.set_style('white')
plt.figure(figsize = (6,4))
sinplot()
sns.despine(top = True,right = True) #删除了上坐标轴、右坐标轴
plt.show()

在这里插入图片描述

#设置风格
sns.set_style('white')
plt.figure(figsize = (6,4))
sinplot()

sns.despine(top = True,right = True,offset=20) #删除了上坐标轴、右坐标轴,offset参数可以调节分离坐标轴
plt.show()

在这里插入图片描述

2.4 设置局部图表风格

axes_style() 与with配合的用法,设置不同的子图使用不同的风格

plt.figure(figsize = (6,4))
with sns.axes_style('darkgrid'):  #设置第一个子图的风格
    plt.subplot(211)
    sinplot()
    
with sns.axes_style('whitegrid'):  #设置第二个子图的风格
    plt.subplot(212)
    sinplot()

在这里插入图片描述

2.5 设置内容风格

set_context(),包括paper\notebook\talk 演讲\poster 海报 设置绘图背景参数的,它主要来影响标签、线条和其他元素的效果,但不会影响整体的风格

sns.set_style('white')  #图表风格
sns.set_context('poster')  #设置图表里面的内容,标签,线条和其他元素
sinplot()
plt.show()

在这里插入图片描述

3 数据集分布的可视化

3.1 单变量分布图

一个特征,比如:年龄

3.1.1 直方图

sns.set_style('white')  #图表风格
sns.set_context('talk')  #设置图表里面的内容,标签,线条和其他元素
np.random.seed(29)
x = np.random.normal(size = 1000)
#通过kernel density estimate(KDE)核密度估计计算出的概率密度函数
#kde:True 拟合出概率密度曲线;rug:True x轴上点上数据;norm_hist 为True 纵轴是概率,为False纵轴是 频率
#bins:设置柱子数量
sns.distplot(x,bins = 50,kde = False,rug = True,color = 'r',norm_hist = True)
plt.show()

在这里插入图片描述

sns.distplot(x,hist = False,rug = False,color = 'r',norm_hist = True)  #只绘制概率密度曲线
plt.show()

在这里插入图片描述

3.1.2 拟合参数分布

#当数据越来越多时,拟合曲线与标准的gamma分布越接近
x = np.random.gamma(6,size = 200) # gamma 分布数据
sns.displot(x,bins = 100,kde = True, color = 'r', fit = stats.gamma); #拟合分布

3.1.3

sns.rugplot(x,height = 0.2,color = 'r',alpha = 0.9)
plt.show()

在这里插入图片描述

3.2 双变量分布图(二元)

#数据集
mean,cov = [0,1],[(1,0.5),(0.5,1)]
data = np.random.multivariate_normal(mean,cov,200)
df = pd.DataFrame(data,columns = ['x','y'])
df.head()

在这里插入图片描述

3.2.1 散点图

sns.jointplot(x = 'x',y = 'y',data = df)
plt.show()

在这里插入图片描述

3.2.2 Hexbin图(六边形分箱图

x,y = np.random.multivariate_normal(mean,cov,1000).T
with sns.axes_style('white'):
    #可以指定什么形状(hex六角形)
    sns.jointplot(x = x,y=y,kind= 'hex',color = 'r')
    
#颜色越深代表点数越多
plt.show()

在这里插入图片描述

3.2.3 核密度估计

sns.jointplot(x = x,y=y ,kind= 'kde',coloc = 'b')
plt.show()

在这里插入图片描述

3.3 可视化数据集中成对的关系

3.3.1 矩阵散点图 - pairplot

iris=pd.read_csv(r".\data\iris.csv")
iris.head() #150个样本4列,3种类别

在这里插入图片描述

#绘制图形中共6种,其余对称关系,中间的是自己和自己,故用直方图表示
sns.pairplot(iris);# 默认对角线hist,非对角线scatter
plt.show()

在这里插入图片描述

#通过kind画不同的图,diag_kind 对角线类型
sns.pairplot(iris,hue="species",diag_kind='hist');
plt.show()

在这里插入图片描述

#属性两两间的关系 + 属性的灰度图
g = sns.PairGrid(iris)
g.map_diag(sns.kdeplot) # 对角线单个属性图
g.map_offdiag(sns.kdeplot, cmap="Blues_d", n_levels=20) # 非对角线两个属性关系图
plt.show()

在这里插入图片描述

3.3.2 矩阵散点图 - PairGrid

sns.set_context('notebook')
g = sns.PairGrid(iris)
g.map(plt.scatter)
plt.show()

在这里插入图片描述

g = sns.PairGrid(iris,hue = "species")
g.map_diag(plt.hist) #对角线 直方图
g.map_offdiag(plt.scatter) #非对角线 散点图
g.add_legend()
plt.show()

在这里插入图片描述

3.3.3 分类散点图—— stripplot

df = pd.DataFrame({'total_bill':np.random.randint(20,30,210),
                  'sex':['女']*60+['男']*150,
                  'day':['Mon','Tues','Wed','Thur','Fri','Sat','Sun']*30})

在这里插入图片描述

#按照不同类别对样本数据进行分布散点图绘制
sns.stripplot(
x = 'day',   #分组统计字段
    y = 'total_bill',  #数据分布统计字段
    #对xy数据对调,将会使得散点图横向分布
    data = df, #对应数据
    jitter = 0.1,  
    size = 10,edgecolor = 'w',linewidth = 1,marker = 'o'
)
plt.show()

在这里插入图片描述

#通过hue参数再分类
sns.stripplot(x = 'day',   #分组统计字段
    					y = 'total_bill',  #数据分布统计字段
              hue = 'sex',
				    #对xy数据对调,将会使得散点图横向分布
				    data = df, #对应数据
             jitter = True)
plt.show()

在这里插入图片描述

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

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

相关文章

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-初始化列表之后执行

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-初始化列表之后执行 二开位置 OnlineAutoList.js.initAutoList 定义方法 /*** 初始化列表之后执行* js增强* param tableColumns* returns {Promise<void>|*}*/onlineTableContext["afterInitAutoList…

2023 ISSE观察:智能遮阳窗帘行业蓬勃发展,AI设计引热议

7月31日&#xff0c;上海国际智能遮阳与建筑节能展览会落下帷幕。作为智能遮阳的行业展会&#xff0c;展会三天&#xff0c;现场热闹非凡&#xff0c;参展商和观展者络绎不绝。 作为一大行业盛事&#xff0c;2023 ISSE展会方打造了五大展区&#xff0c;除了提供系统门窗装修方案…

微信如何提高回复信息速度?

规范流程话术有什么用&#xff1f;为了提高回复客户的效率和质量&#xff0c;可以事先设计好的一套标准化的对话模板。它通常包括多个环节和问题&#xff0c;帮助客服人员或销售人员在与客户沟通时&#xff0c;按照标准化的流程进行&#xff0c;以提高工作效率和客户满意度。 如…

vue echart3个饼图

概览&#xff1a;根据UI设计需要做3个饼图且之间有关联&#xff0c;并且处理后端返回的数据。 参考链接&#xff1a; echart 官网的一个案例&#xff0c;3个饼图 实现思路&#xff1a; 根据案例&#xff0c;把数据处理成对应的。 参考代码&#xff1a; 1.处理后端数据&am…

LangChain+ChatGLM大模型应用落地实践(一)

LLMs的落地框架&#xff08;LangChain&#xff09;&#xff0c;给LLMs套上一层盔甲&#xff0c;快速构建自己的新一代人工智能产品。 一、简介二、Lanchain源码三、租用云服务器实例四、部署实例 一、简介 LangChain是一个近期非常活跃的开源代码库&#xff0c;目前也还在快速…

SOLIDWORKS Utilities应用

在实际的生产设计制造中&#xff0c;经常会遇到同一个零件多个版本&#xff0c;有可能再次调用零件的时间已经是很长时间之后&#xff0c;对于版本之间的区别就不会那么清楚&#xff0c;碰到简单明显的零件还可以轻松的找到区别&#xff0c;但是复杂的零件区别的查找可能会造成…

Jenkins 节点该如何管理?

Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点)&#xff0c;分布式构建能够让同一套代码在不同的环境(如&#xff1a;Windows 和 Linux 系统)中编译、测试等 Jenkins 的任务可以分布在不同的节点上运行 节点上需要配置 Java 运行时环境&#xff0c;JDK 版本大于 1.5 节…

Echarts常见图表展示

一、折线图 1.1 堆叠折线图 const option {title: {text: 折线图,},tooltip: {trigger: axis},legend: {data: [张三, 李四, 王五],bottom: 10,},grid: {left: 3%,right: 4%,bottom: 10%,containLabel: true},xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, We…

layui框架学习(35:数据表格_列参数设置)

Layui中的table数据表格模块支持对表格及列进行基础参数设置以提高数据的可视化及可操作性&#xff0c;本文学习并记录与列相关的主要基础参数的用法及效果。   基础参数field设置待显示到列中的数据的字段名&#xff0c;主要针对数据表格url属性中返回的数据集合或data属性设…

如何使用fiddler进行抓包

首先需要下载fiddler&#xff0c;推荐使用bing搜索引擎搜索&#xff08;百度搜狗一般搜这种工具展示的前几个全都是广告&#xff09;&#xff0c;直接搜索fiddler&#xff0c;搜出来第一个fiddler官网 然后直接点击download下载 进入下载页面后&#xff0c;正确填写一个邮箱&a…

【LeetCode|编译原理】剑指 Offer 20. 表示数值的字符串

文章目录 题目链接标签步骤实现代码&#xff08;C&#xff09; 题目链接 剑指 Offer 20. 表示数值的字符串 标签 有限状态自动机(FA) 步骤 Step1. 去除字符串左、右空格&#xff1b; string strip(string str) {int start -1;for (int i 0; i < str.length(); i) {i…

一个CSS渐变下划线效果的实用技巧

下划线它只用到了CSS的渐变背景、背景大小调整、位置设置、鼠标hover 过渡等基本属性和技巧。 分析与实现 我们先看一下基本的结构。 <h2 class"title"><span>你好啊&#xff0c;嘴巴嘟嘟</span></h2>然后我们给span 元素添加一个线性渐变…

如何在Windows11中备份指定文件夹?

在现代的信息化时代&#xff0c;无论工作场所还是日常生活&#xff0c;文件的使用频率已经越来越高。对于那些经常操作特定文件夹的用户&#xff0c;他们可能会经常进行文件的修改、新增以及删除操作。为了防止文件丢失导致的困扰&#xff0c;定期备份指定文件夹显得尤为关键。…

java医院电子病历系统源码:云端SaaS服务 前后端分离模式开发和部署

电子病历系统是什么&#xff1f; 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息&…

晋级榜单揭晓!华秋第九届硬创大赛-华南分赛区路演成功举办

7月21日&#xff0c;第十五届深创赛福田预选赛区暨华秋第九届硬创大赛华南分赛区决赛路演活动在深圳华强科创广场成功举办。活动由深圳华秋电子有限公司&#xff08;以下简称 华秋 &#xff09;、深圳市福田区新一代信息技术产业链党委、深圳新一代产业园、微纳研究院、华强科创…

关于运发的知识点123(个人笔记 持续更新)

前言&#xff1a;作为一个物联网的小辣鸡&#xff0c;硬件设计水平不能说没有&#xff0c;只能说一点点。 正好要做新项目&#xff0c;自己学着去处理信号&#xff0c;滤波&#xff0c;在这里做一点笔记。 参考书一&#xff1a;杨建国老师《新概念模拟电路》.pdf 参考书二&…

如何卸载华为手机内置app

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 最近自用的华为手机的存储空间快满了&#xff0c;想把手机内置的app清理一下。然后到网上搜索解决方案&#xff0c;大致弄明白了步骤。主要是通过华为手机…

23款奔驰GLE450豪华型升级AMG直瀑式中网,战斗感立马提升了一个档次

奔驰GLE450豪华型升级AMG竖杠中网前进气格栅&#xff0c;AMG中网竖杠格栅&#xff0c;镀铬饰条呈圆弧状&#xff0c;色泽均衡&#xff0c;质感顺滑&#xff0c;极富冲击力。AMG专属字标&#xff0c;与中网卡扣装配紧密&#xff0c;凸显AMG的身份象征&#xff0c;点睛之笔又不显…

HC32F448-小华MCU

由于要开发和学习使用低成本MCU&#xff0c;这里记录下小华半导体HC32F448的手册参数 芯片官网&#xff08;HC32F448MCTI-LQFP80&#xff09; 小华半导体有限公司 (xhsc.com.cn) HC32F448 系列MCU是32位的ARM Cortex-M4微控制器。最高工作频率 200MHz&#xff0c;最大 256KB 的…

中小学分班查询系统0成本制作方法公布了,人人可用

传统的学生分班查询平台通常需要进行专业的技术开发&#xff0c;以实现学生查询和查看分班信息的功能。这个过程涉及到软件开发、数据库设计、系统集成等多个环节&#xff0c;需要有一支专业的技术团队来完成。 然而&#xff0c;这样的技术开发和维护过程需要耗费大量的经济成…