python中seaborn库_GitHub - a13544835729/python-seaborn: python seaborn库基础用法
Seaborn
一.概念
1分组绘图
#比如说需要在一张图上绘制两条曲线,分别是南方和北方的气温变化,分别用不同的颜色加以区分。在seaborn中用hue参数控制分组绘图
2.分面绘图
#其实就是在一张纸上划分不同的区域,比如2*2的子区域,在不同的子区域上绘制不同的图形,在matplotlib中就是 add_subplot(2,2,1),在seaborn中用col参数控制,col的全称是columns,不是color,如果辅助col_wrap参数会更好些。后来发现,col可以控制columns的子图,那么row可以控制rows的子图排列。
#如果需要分面绘图,应该使用seaborn的FacetGrid对象,seaborn的一般的绘图函数是没有分面这个参数的。
3.统计函数
#分组绘图的时候,会对分组变量先要用统计函数,然后绘图,比如先计算变量的均值,然后绘制该均值的直方图。统计绘图参数是 estimator,很多情况下默认是numpy.mean。在ggplot2中就大量使用了这种方法。如果不适用统计绘图,就需要先用pandas进行groupby分组汇总,然后用seaborn绘图,多此一举了。
二.图形分类
#在seaborn中图形大概分这么几类,因子变量绘图,数值变量绘图,两变量关系绘图,时间序列图,热力图,分面绘图等。
1.因子变量绘图
#在seaborn中图形大概分这么几类,因子变量绘图,数值变量绘图,两变量关系绘图,时间序列图,热力图,分面绘图等。
1.1箱线图boxplot
#箱线图提供有关数据位置的分散情况
#主要包含六个数据节点,分别是,上边缘,上四分位,中位数,下四分位,下边缘
#超出边界的为异常值
import seaborn as sns
#设置图样类型
sns.set_style('whitegrid')
#导入系统自带tips数据包
tips=sns.load_dataset('tips')
#绘制箱线图
ax=sns.boxplot(x=tips['total_bill'])
#竖着放的箱线图,也就是将x换成y
ax=sns.boxplot(y=tips['total_bill'])
#分组绘制箱线图,分组因子是day,在x轴不同位置绘制
ax=sns.boxplot(x='day',y='total_bill',data=tips)
#分组箱线图,分子因子是smoker,不同的因子用不同颜色区分,
#palette参数是调色板,hue参数是分子因子名称
#
ax=sns.boxplot(x='day',y='total_bill',hue='smoker',data=tips,palette='Set3')
#改变线宽,linewidth参数
ax=sns.boxplot(x='day',y='total_bill',hue='time',data=tips,linewidth=2.5)
tips.head(5)
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
total_bill
tip
sex
smoker
day
time
size
0
16.99
1.01
Female
No
Sun
Dinner
2
1
10.34
1.66
Male
No
Sun
Dinner
3
2
21.01
3.50
Male
No
Sun
Dinner
3
3
23.68
3.31
Male
No
Sun
Dinner
2
4
24.59
3.61
Female
No
Sun
Dinner
4
#改变x轴顺序,order参数
ax=sns.boxplot(data=tips,y='tip',x='time', order=["Dinner", "Lunch"])
#将数据的每一个变量都绘制一个箱线图,水平放置,参数orient ,参数palette决定样式
iris=sns.load_dataset('iris')
ax=sns.boxplot(data=iris,orient='h',palette='Set2')
#箱线图+有分布趋势的散点图
ax=sns.boxplot(x='day',y='total_bill',data=tips)
ax=sns.swarmplot(x='day',y='total_bill',data=tips,color='black')
1.2小提琴图violinplot
#小提琴图其实是箱线图与核密度图的结合,箱线图展示了分位数的位置,小提琴图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高。在图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须。
#外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一)。
#设置背景图
sns.set_style('whitegrid')
#绘制小提琴图
sns.violinplot(x='total_bill',data=tips)
#分组小提琴图,通过x轴分组
ax=sns.violinplot(data=tips,x='day',y='total_bill')
#通过hue分组小提琴图,相当于再分组
sns.violinplot(data=tips,x='day',y='total_bill',
hue='smoker',palette='muted')
#分组组合小提琴图,相当于将分组的小提琴图,各取一般组合
ax=sns.violinplot(data=tips,x='day',y='total_bill',
hue='smoker',palette='muted',split=True)
ax=sns.violinplot(x='time',y='tip',data=tips,order=['Dinner','Lunch'])
1.3散点图striplot
#seaborn中有两个散点图,一个是普通的散点图,另一个是可以看出分布密度的散点图。
#普通散点图
ax1 = sns.stripplot(x=tips["total_bill"],jitter=False)
#带分布密度的散点图
ax2=sns.swarmplot(x=tips['total_bill'])
#分组散点图,jiter设置抖动项
ax1 = sns.stripplot(y="total_bill",x='day',data=tips,jitter=False)
#x,y轴交换
ax1 = sns.stripplot(x="total_bill",y='day',data=tips)
#分组绘制,相当于分组后再分组,通过hue参数控制
ax=sns.stripplot(x="sex", y="total_bill",hue='day',
data=tips, jitter=True)
#分开绘制
ax=sns.stripplot(x="day", y="total_bill",hue='smoker',
data=tips, jitter=True,split=True)
#散点图+小提琴图 inner参数改变小提琴内部
ax=sns.stripplot(x="day", y="total_bill",hue='smoker',
data=tips, jitter=True)
ax=sns.violinplot(x='day',y='total_bill',data=tips,color='gray',inner=None)
1.4带分布的散点图swarmplot
#swarmplt的参数和用法和stripplot的用法是一样的,只是表现形式不一样而已。
#单个散点图
ax=sns.swarmplot(tips['total_bill'])
#分组散点图
ax=sns.swarmplot(data=tips,y='total_bill',x='day')
1.5直方图barplot
#直方图的统计函数,默认绘制的是变量的均值 estimator=np.mean
#参数ic 取消直方图上方的置信度线
ax=sns.barplot(data=tips,x='day',y='total_bill',ci=0)
#分组直方图
ax=sns.barplot(data=tips,x='day',y='total_bill',ci=0,hue='sex')
#绘制变量中位数的直方图,estimator指定统计函数 ,
from numpy import median
ax=sns.barplot(data=tips,x='day',y='total_bill',ci=0,estimator=median)
#改变主题颜色 palette参数
ax=sns.barplot(data=tips,x='day',y='total_bill',
ci=0,estimator=median,palette='Blues_d')
1.6计数的直方图countplot
#对因子变量技术,然后绘制条形图
sns.set(style='darkgrid')
titanic=sns.load_dataset('titanic')
ax=sns.countplot(x='class',data=titanic)
# 分组绘图
ax = sns.countplot(x="class", hue="who", data=titanic)
#横放
ax = sns.countplot(y="class", hue="who", data=titanic)
titanic.head()
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
survived
pclass
sex
age
sibsp
parch
fare
embarked
class
who
adult_male
deck
embark_town
alive
alone
0
0
3
male
22.0
1
0
7.2500
S
Third
man
True
NaN
Southampton
no
False
1
1
1
female
38.0
1
0
71.2833
C
First
woman
False
C
Cherbourg
yes
False
2
1
3
female
26.0
0
0
7.9250
S
Third
woman
False
NaN
Southampton
yes
True
3
1
1
female
35.0
1
0
53.1000
S
First
woman
False
C
Southampton
yes
False
4
0
3
male
35.0
0
0
8.0500
S
Third
man
True
NaN
Southampton
no
True
1.7两变量关系图factorplot
#变量联合绘图
#绘制因子变量-数值变量的分布情况图
#用小提琴图反应 class-who 两变量的分布情形
g=sns.factorplot(data=tips,x='day',y='total_bill',hue='sex',kind='violin')
#不同的deck(因子)绘制不同的alive(数值),col为分子图绘制,col_wrap每行画4个子图
g=sns.factorplot(x='alive',col='deck',col_wrap=4,
data=titanic[titanic.deck.notnull()],
kind='count',size=2.5,aspect=.8)
2. 回归图
#回归图有两个
#lmplot: Plot data and regression model fits across a FacetGrid.
#regplot:Plot data and a linear regression model fit.
2.1线性回归图lmplot
#线性回归图
ax=sns.lmplot(x="total_bill", y="tip", data=tips)
# 分组的线性回归图,通过hue参数控制
g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips)
#分组绘图,不同的组用不同的形状标记
g = sns.lmplot(x="total_bill", y="tip",
hue="smoker", data=tips,markers=['^','x'])
#分开分组绘图
g = sns.lmplot(x="total_bill", y="tip",
col="smoker", data=tips)
#col+hue 双分组参数,即分组,又分子图绘图
g = sns.lmplot(x="total_bill", y="tip",hue='day',
col="day", data=tips,aspect=.4)
# 分组绘制,控制size尺寸
g = sns.lmplot(x="total_bill", y="tip", col="day", hue="day",
data=tips, col_wrap=2, size=3)
2.2逻辑回归图regplot
#绘制逻辑回归图
ax = sns.regplot(x="total_bill", y="tip", data=tips)
#控制散点的形状和颜色 参数color,marker
ax = sns.regplot(x="total_bill", y="tip", data=tips,marker='+',color='r')
#控制回归的置信度,拟合直线的外面的面积有变化
ax = sns.regplot(x="total_bill", y="tip", data=tips,marker='+',color='g',ci=68)
3. 分布图
#拟合二次曲线通过参数order=2设置
#拟合一次曲线 参数order=1
ans = sns.load_dataset("anscombe")
ax=sns.regplot(x='x',y='y',data=ans.loc[ans.dataset=='II'],order=2)
4. 热力图
#热力图表示两两因子间的相关性
import numpy as np
import seaborn as sns
uniform_data=np.random.rand(10,12)
ax=sns.heatmap(uniform_data)
#改变颜色范围
ax=sns.heatmap(uniform_data,vmin=1,vmax=0)
# 绘制x-y-z的热力图,比如 年-月-销量 的热力图
flights=sns.load_dataset('flights')
flights = flights.pivot("month", "year", "passengers")
ax=sns.heatmap(flights)
#绘制热力图,将数值写到热力图上
ax=sns.heatmap(flights,annot=True,fmt='d')
5.数值分布绘图
5.1.直方图distplot
#绘制数值变量的密度分布图
#默认既绘制核密度曲线,也绘制直方图
#直方图hist=True,核密度曲线rug=True
sns.set(rc={'figure.figsize':(8,4)})
x=np.random.randn(100)
ax=sns.distplot(x)
#只绘制核密度曲线,不绘制直方图
x=sns.distplot(x,hist=False,rug=True)
5.2.双变量关系图 jointplot
#多变量联合,kind参数可以使用不同的图形反应两变量的关系,比如点图,线图,核密度图。
sns.set(style='white')
g=sns.jointplot(x='total_bill',y='tip',data=tips)
# 通过kind参数,除了绘制散点图,还要绘制拟合的直线,拟合的核密度图
g = sns.jointplot("total_bill", "tip", data=tips, kind="reg")
python中seaborn库_GitHub - a13544835729/python-seaborn: python seaborn库基础用法相关推荐
- Python中的图像处理(第九章)Python图像增强
Python中的图像处理(第九章)Python图像增强 前言 一. Python准备 二. Python仿真 三. 小结 前言 随着人工智能研究的不断兴起,Python的应用也在不断上升,由于Pyth ...
- python中的counter()、elements()、most_common()和subtract()函数的用法
python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...
- eval在python中是什么意思_如何在Python中使用eval ?
Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...
- python中for语句的使用_对Python中for复合语句的使用示例讲解
当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/p ...
- [转载] python中的且语句_简单探讨python中的语句和语法
参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...
- python中numpy数组的合并_基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...
- python 中缩进的作用_缩进在Python中的作用有哪些?Python缩进案例分享
缩进通常是指在文档中缩进单词,空格或行以遵循文档的样式规则,或者可以用来解释编写文档或代码时应使用的距离或应使用的空格.不过缩进在Python中的作用有哪些?在Python中缩进是最独特的功能之一,可 ...
- 在python中的转义字符是什么_Python转义字符-Python转义字符表-Python转义字符的作用-在Python中如何输出转义字符-嗨客网...
Python转义字符教程 在编程中有一些字符是打不出来的,比如换行,提示音,下一个制表位等等,于是程序语言的开发者就设计了转义序列(escape sequence)这种东西用来表达这些字符. 所谓转义 ...
最新文章
- you should specify the `steps` argument
- 为了让开发者写MaxCompute SQL更爽,DataWorks 增强SQL 编辑器功能
- 20145321 实验三实验报告
- Atitit.数据库表的物理存储结构原理与架构设计与实践
- 筛选法求素数-c++
- C++模板的概念 定义和使用
- 教务管理系统登陆显示不出验证码图片求哥帮助一下
- Calib 工具说明
- java中linux下反斜杠,Linux下反斜杠号\引发的思考
- 一维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_8】
- Python读取和操作Excel(.xlsx)文件
- sequoia 安装配置
- 云计算是继互联网计算机后在信息时代,你知道啥是“云计算”吗?
- 中国292座城市政商关系排行榜(2020)
- 荣耀开发者平台全面升级,加强分发场景服务与能力开放
- vs2010配置python_win7 环境安装Python + IDE(vs2010)开发
- AdapterView及子类
- 2021年安全生产模拟考试(全国特种作业操作证焊工作业-钎焊模拟考试题库二)安考星
- 简单理解正态分布(概率密度函数)和68-95-99.7法则
- Bluetooth Profile Specification之(HFP篇)4.3 音频连接设置