seaborm库学习手册

seaborm 库 是 matplotlib库的升级,对matplotlib进行了封装,直接传数据进去后就可以生成图。同时提供了非常丰富的模板,当我们想进行画图,比如画条形图,柱状图等的都提供了模板,只需要很简单的1,2行代码就可以完成。
非常轻松就可以画漂亮的图。
pycharm 出不来效果,在代码末尾加上plt.show() 就好了。

import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
##创建测试数据
def sinplot(flip=1):
    x=np.linspace(0,14,100)  ##我要在 0 到14 的区间内找出 100个点
    for i in range(1,7):
        plt.plot(x,np.sin(x +i * .5) * (7-i) * flip) ##画这样的6条线 sin
#sns.set_style("dark")
# data = np.random.normal(size=(20,6)) + np.arange(6) /2
# sns.boxplot(data=data)
# sns.set()  ###使用默认的参数。风格会发生改变
#不加sns.set()   图一
# sinplot() ##图二
# plt.show()
##5中风格主题  1.darkgrid    2.whitegrid   3.dark   4.white  5.ticks

sns.set_style("whitegrid") ##白色背景
data = np.random.normal(size=(20,6))+ np.arange(6)/2 ##构造随机数据
sns.boxplot(data=data)
sns.set_style("ticks")  ###在X Y轴加上一个齿
sns.despine() ###去掉顶上和右边的框
plt.show() #横条用来衡量当前这个值对应哪一个颗度
#图三

图一:
这里写图片描述
图二:
这里写图片描述
图三:
这里写图片描述

sns.set_style("whitegrid") ##白色背景
data = np.random.normal(size=(20,6))+ np.arange(6)/2 ##构造随机数据
sns.violinplot(data)
sns.despine(offset=30)   ###offset 是指你要画的图离你轴线的距离 图四  soffset = 10 or 30
plt.show() #横条用来衡量当前这个值对应哪一个颗度

这里写图片描述

data = np.random.normal(size=(20,6)) + np.arange(6) /2
sns.set_style("whitegrid")
sns.boxplot(data=data,palette="deep")
sns.despine(left=True)  ##left=true 相当于你把左边的轴去掉,四个方位都可以影藏
plt.show()

这里写图片描述
需求:画一个图的时候有多个不同风格的子图。如何指定不同的风格,通过with 域来实现

with sns.axes_style("darkgrid"):  ##用with打开一种风格,在with 里面执行的都是这一种风格,
    plt.subplot(211)
    sinplot()
plt.subplot(212) ##在with 外面执行的是另一个风格
sinplot(-1)
plt.show()

这里写图片描述

sns.set()  ###先启用默认的设置
sns.set_context("paper",font_scale=3.5,rc={"lines.linewidth":2.5})  ###context  设置整体画的大小和线的大小  paper 是别名  还有talk,notebook,font_scale 用于指定字的大小,lines.linewidth 用于指定线条的粗细
plt.figure(figsize=(8,6))
sinplot()
plt.show()

调色板的使用

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(rc={"figure.figsize":(6,6)})
# 调色板
# 颜色很重要,color_palette()能传入任何Matplotlib 所支持的颜色  支持所有matplotlib所有参数的导入
# color_palette() 不写参数则默认颜色
#set_palette()设置所有图的颜色
current_palette = sns.color_palette()
#sns.palplot(current_palette)
###默认有6个颜色的主题  deep,muted,pastel,bright,dark,colorblind
#圆形画板,当你有六个以上的分类要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色,最常用的方法是使用hls的颜色空间
#sns.palplot(sns.color_palette("hls",8))##8,代表我要传出来的是8种颜色
#plt.show()
data = np.random.normal(size=(20,8))+ np.arange(8)/2
sns.palplot(sns.hls_palette(8,l=1,s=9))  ###可以设置颜色的饱和度和亮度l 值越大越亮,s是饱和度
sns.boxplot(data=data,palette=sns.color_palette("hls",8))
plt.show()

这里写图片描述

#需求: 不同的国家的运动员用不同的曲线。相同国家的运动员颜色要相近
sns.palplot(sns.color_palette("Paired",10))  ##paired 意识使颜色是一对一对出现的
plt.show()

这里写图片描述

使用xkcd颜色来命名颜色

xkcd 包含了一套众包努力的针对颜色RGB色的命名,产生了954个可以随时通过xdcd_rgb字典中调用的命名颜色

plt.plot([0,1],[0,1],sns.xkcd_rgb["pale red"],lw=3)  ###用于你想指定固定颜色的时候,使用xkcd,
plt.plot([0,1],[0,2],sns.xkcd_rgb["medium green"],lw=3)
plt.plot([0,1],[0,3],sns.xkcd_rgb["denim blue"],lw=3)
plt.show()

这里写图片描述

实现颜色的渐变

sns.palplot(sns.color_palette(“Blues”)) ##实现线条颜色的由浅到深
sns.palplot(sns.color_palette(“BuGn_r”)) ##实现颜色的由深到浅,在颜色后面加_r
plt.show()##效果如图:
这里写图片描述
这里写图片描述

light_palette()和dark_palette()调用定制连续调色板

sns.palplot(sns.light_palette("green"))  ####light 浅色

sns.palplot(sns.dark_palette("purple"))   ###dark 深色

sns.palplot(sns.light_palette("navy",reverse=True))  ##指定一个reverse=True 反转,颜色由深到浅
plt.show()

这里写图片描述

需求背景:拿到数据后先对数据分析,1.先看数据的分部情况,通常会先做单变量,单特征的分析。我们需要先把该该特征的分部情况分析出来。

import numpy  as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt
import seaborn as sns
x = np.random.normal(size=100)  ##随机生成高斯数据
sns.distplot(x,kde=False)  ###distplot 可以直接将直方图画出来  ,不需要指定,自动生成坐标轴范围
plt.show()
# sns.distplot(x,bins=20,kde=False)  ##在X轴上,我平均分成20等份,通过bins实现
# plt.show()

这里写图片描述

数据分部情况:

x = np.random.gamma(6,size=200)
sns.distplot(x,kde=False,fit=stats.gamma) ##fit可以查看当前数据的统计指标
plt.show()
这里写图片描述

数据分部情况:

# x = np.random.gamma(6,size=200)
# sns.distplot(x,kde=False,fit=stats.gamma) ##fit可以查看当前数据的统计指标
# plt.show()
mean, cov = [0,1],[(1,.5),(.5,1)]  ###创造数据,指定了均值和协方差
data = np.random.multivariate_normal(mean,cov,200)  ##通过np 指定了均值和协方差生成200的数据
df = pd.DataFrame(data,columns=["x","y"])  ##生成之后就有xy 这样的数据
###对于二维数据,想看X和Y之间的一个关系是什么。特征和特征内部之间的关系,最好用散点图
sns.jointplot(x="x",y="y",data=df)  ##jointplot既可以把2者之间的关系画出来,还可以把自身之间的分部情况画出来。
plt.show()

这里写图片描述

场景是不是存在一种情况,大部分的点都集中在一个区域,点非常密集就成了黑乎乎的一盘,如何解决

x,y=np.random.multivariate_normal(mean,cov,1000).T
with  sns.axes_style("white"):  ##指定风格为黑白
    sns.jointplot(x=x,y=y,kind="hex",color="k")  ###在这1000个点中我要做这个hex图
plt.show() ###颜色越深说明出现的次数越多

这里写图片描述

升级版:

iris = sns.load_dataset("iris")  ##sns库首先把数据集加载进来,内置iris 数据库,可以自己从pns读取进来。
sns.pairplot(iris) ##pairplot 会帮我们吧两两之间的关系画出来。单特征,特征和特征之间的显示
plt.show()

这里写图片描述

绘制回归关系,推荐regplot()

sns.set(color_codes=True)
np.random.seed(sum(map(ord,"regression")))
tips = sns.load_dataset("tips")
#print(tips.head()) ###数据是一个人的点餐记录
sns.regplot(x="total_bill",y="tip",data=tips)
plt.show()

这里写图片描述
这里写图片描述

np.random.seed(sum(map(ord,"categorical")))
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
tips = sns.load_dataset("iris")
sns.stripplot(x="day",y="total_bill",data=tips,jitter=True)###jitter =True 的意识是让点左右偏移一点。避免重叠
sns.swarmplot(x="day",y="total_bill",data=tips)  ###数据显示更加的有条理还不重叠,类似一个树的形状
sns.swarmplot(x="day",y="total_bill",data=tips,hue="sex")  ##数据用不同的颜色显示  hue
sns.violinplot(x="totail_bill",y="day",hue="sex")  ###小提琴图
plt.show()

当我们要把很多数据集中的子集进行展示的时候我们就能用到了,1,构造展示区域,2通过属性 map 展示

np.random.seed(sum(map(ord,"regression")))
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips,col="time")   ###先画出空图
g.map(plt.hist,"tip") #hist  map 指定画条形图

g = sns.FacetGrid(tips,col="sex",hue="smoker")
g.map(plt.scatter,"total_bill","tip",alpha=.7,color=".4")  ##调用map画图,scatter 散点图,后面两个为数据,aplha为数据的透明度

这里写图片描述

np.random.seed(sum(map(ord,"regression")))
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips,col="time")   ###先画出空图
g.map(plt.hist,"tip") #hist  map 指定画条形图
g = sns.FacetGrid(tips,row="smoker",col="time",margin_titles=True)
g.map(sns.regplot,"size","total_bill",color=".1",fit_reg=True,x_jitter=1)  ##fit_reg=True 可以指定将回归曲线画出来。

这里写图片描述

sns.set(style="whitegrid",color_codes=True)
np.random.seed(sum(map(ord,"regression")))
tips = sns.load_dataset("tips")
pal = dict(Lunch="seagreen",Dinner="gray")   ##palette写成字典的形式,指定lunch 和Dinner的颜色
g = sns.FacetGrid(tips,hue="time",palette=pal,size=5,hue_kws={"marker":["^","v"]})###maker可以指定颜色和形状
g.map(plt.scatter,"total_bill","tip",s=50,alpha=.7,linewidth=.5,edgecolor="white")
plt.show()

改变了图片形状

猜你喜欢

转载自blog.csdn.net/qq_25834767/article/details/82193047
今日推荐