Python-seaborn 笔记整理

仅供个人自学使用,仅供参考
Reference:
https://vitu.ai/course/65599248200156992
https://www.jianshu.com/p/94931255aede
https://baijiahao.baidu.com/s?id=1650565251991078037&wfr=spider&for=pc
https://www.cnblogs.com/abdm-989/p/12204640.html
某速查表

Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。

特点
  • 基于matplotlib aesthetics绘图风格,增加了一些绘图模式
  • 增加调色板功能,利用色彩丰富的图像揭示您数据中的模式
  • 运用数据子集绘制与比较单变量和双变量分布的功能
  • 运用聚类算法可视化矩阵数据
  • 灵活运用处理时间序列数据
  • 利用网格建立复杂图像集
    Python-seaborn 笔记整理_第1张图片
    5种主题风格
  • darkgrid
  • whitegrid
  • dark
  • white
  • ticks

导包

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

Seaborn 要求原始数据的输入类型为 pandas 的 Dataframe 或 Numpy 数组,画图函数有以下几种形式

sns.图名(x='X轴 列名', y='Y轴 列名', data=原始数据df对象)
sns.图名(x='X轴 列名', y='Y轴 列名', hue='分组绘图参数', data=原始数据df对象)
sns.图名(x=np.array, y=np.array[, ...])

通用设置

# Set the width and height of the figure
plt.figure(figsize=(14,6))

# Add title
plt.title("标题")

#调整x,y轴的限制
plt.ylim(0,100)
plt.xlim(0,10)
#调属性
plt.setp(ax,yticks=[0,5]) 
#调整子图参数
plt.tight_layout()

#将上下文设置为 "notebook", 缩放字体,覆盖参数映射
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth":2.5})

#显示图形
plt.show() 
#保存
plt.savefig("foo.png")
#保存为透明画布
plt.savefig("foo.png", transparent=True)

各种图

lmplot

lmplot主要用于可视化线性回归关系,也就是用来画回归图,可以观察两组数据之间是否存在线性关系。

# 设置图表风格为darkgrid 
sns.set(style='darkgrid') 
# 读取Seaborn自带的数据集
irisiris = sns.load_dataset("iris") 
# x轴为萼片长度,y轴为萼片宽度 
# hue: 根据品种分类 
# truncate: 截断,为True时回归线受到数据大小的限制,默认为False 
# height:图表大小
g=sns.lmplot(x="sepal_length",y="sepal_width",hue="species",truncate=True, height=5, data=iris) # 设置x轴和y轴的标签
g.set_axis_labels("Sepal length (mm)", "Sepal width (mm)")

Python-seaborn 笔记整理_第2张图片

catplot

catplot用于将分类图绘制到FacetGrid界面上,根据kind参数不同可以绘制不同类型的分类图。

# 设置风格 
sns.set(style="whitegrid") 
# 读取数据集
titanic titanic = sns.load_dataset("titanic") 
# 显示不同船舱等级和性别下的存活率
g=sns.catplot(x="class",y="survived", hue="sex",data=titanic,height=6, kind="bar", palette="muted") 
# 不显示y轴 
g.despine(left=True) 
# 设置y轴标签 
g.set_ylabels("survival probability")

Python-seaborn 笔记整理_第3张图片

boxplot

箱形图(或箱须图)可以在变量之间或类别变量之间以比较的方式显示定量数据的分布。

# 设置风格,调色盘
sns.set(style="ticks", palette="pastel")
# 读取数据集
tips tips = sns.load_dataset("tips")
# 根据日期和是否吸烟对小费数目进行分类显示
sns.boxplot(x="day", y="total_bill", hue="smoker", palette=["m", "g"], data=tips)
# offset设置纵横两轴近原点端点距离原点的距离
# trim限制显示的轴线的范围 
sns.despine(offset=10, trim=True)

Python-seaborn 笔记整理_第4张图片

pairplot

变量关系组图,此函数将创建一个轴网格,显示每两个变量之间的分布情况。对角轴的处理方式有所不同,显示单个变量的分布图。

# 设置风格 
sns.set(style="ticks") 
# 读取数据集
irisdf = sns.load_dataset("iris") 
# 显示分布图 
sns.pairplot(df, hue="species")

Python-seaborn 笔记整理_第5张图片

heatplot

热力图,绘制矩形数据作为颜色编码矩阵。

# 设置为默认风格、
sns.set() 
# 读取数据集
flightsflights_long = sns.load_dataset("flights") 
# pivot(): 根据列值重塑数据 
index='month',column='year', values='passengers' 
flights = flights_long.pivot("month", "year", "passengers") 
# 用每个单元格中的数值绘制热图 
f, ax = plt.subplots(figsize=(9, 6)) 
sns.heatmap(flights, annot=True, fmt="d", linewidths=0.5, ax=ax)

Python-seaborn 笔记整理_第6张图片

barplot

柱状图,如其名

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

x = np.arange(8)
y = np.array([1,5,3,6,2,4,5,6])
df = pd.DataFrame({"x-axis": x,"y-axis": y})

sns.barplot("x-axis","y-axis",palette="RdBu_r",data=df)
plt.xticks(rotation=90)
plt.show()

横坐标为0-7的整数,纵坐标表示这八个整数分别所占的权重,调整 palette 参数可以美化显示风格
Python-seaborn 笔记整理_第7张图片

散点图
sns.scatterplot(x=insurance_data['bmi'], y=insurance_data['charges'])

Python-seaborn 笔记整理_第8张图片
加回归,把命令换成sns.regplot

regplot()和lmplot()都可以绘制回归关系,推荐regplot()。
两者间主要的区别是:regplot接受各种格式的x y,包括numpy arrays ,pandas series 或者pandas Dataframe对象。相比之下,lmplot()只接受字符串对象。这种数据格式被称为’long-form’或者’tidy’。除了输入数据的便利性外,regplot()可以看做拥有lmplot()特征的一个子集。

sns.regplot(x=insurance_data['bmi'], y=insurance_data['charges'])

Python-seaborn 笔记整理_第9张图片
带颜色分类的散点图

sns.scatterplot(x=insurance_data['bmi'], y=insurance_data['charges'], hue=insurance_data['smoker'])

Python-seaborn 笔记整理_第10张图片

sns.lmplot(x="bmi", y="charges", hue="smoker", data=insurance_data)

Python-seaborn 笔记整理_第11张图片

直方图

distplot

# kde 密度曲线  rug 边际毛毯  
sns.distplot(a=iris_data['Petal Length (cm)'], kde=False, rug = False)

Python-seaborn 笔记整理_第12张图片

密度图

kdeplot

# shade  阴
sns.kdeplot(data=iris_data['Petal Length (cm)'], shade=True)

Python-seaborn 笔记整理_第13张图片

二维密度图

jointplot
特殊参数

kind : { “scatter” | “reg” | “resid” | “kde” |hex}

基本参数

color : 颜色。参数类型: matplotlib color
size : 默认 6,图的尺度大小(正方形)。参数类型:numeric
ratio : 中心图与侧边图的比例,越大、中心图占比越大。参数类型:numeric
space : 中心图与侧边图的间隔大小。参数类型:numeric
s : 点的大小。参数类型:numeric
linewidth : 线的宽度。参数类型:numeric
edgecolor : 点的边界颜色,默认无色,可以重叠。”w”为白色。参数类型:matplotlib color
{x, y}lim : x、y轴的范围。参数类型:two-tuples
{joint, marginal, annot}_kws : dicts Additional keyword arguments for the plot components.
marginal_kws : 侧边图的信息。例如:dict(bins=15, rug=True)
annot_kws : 注释的信息。例如:dict(stat=”r”)
sns.jointplot(x=iris_data['Petal Length (cm)'], y=iris_data['Sepal Width (cm)'], kind="kde")

Python-seaborn 笔记整理_第14张图片

## 设置颜色
sns.set(color_codes=True)
mean, cov = [0, 1], [(1, .5), (.5, 1)] # 设置均值(一组参数)和协方差(两组参数)
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style("ticks"):
    sns.jointplot(x=x, y=y, kind="hex", color="k")
plt.show()

Python-seaborn 笔记整理_第15张图片

树形图

类似于散点图,用于显示每一个数据的分布情况

tips = sns.load_dataset("tips")
sns.swarmplot(x="day", y="total_bill",hue="sex",data=tips)
plt.show()

Python-seaborn 笔记整理_第16张图片

饼图
phone=df.phone_operator.value_counts()
df_phone=pd.DataFrame({'phone_operator':phone.index[1:],'fre':phone.values[1:]})

plt.rc('font', family='SimHei', size=13)
fig = plt.figure()
plt.pie(df_phone.fre, labels=df_phone.phone_operator, autopct='%1.2f%%') #画饼图(数据,数据对应的标签,百分数保留两位小数点)
plt.title("手机运营商分布")
plt.show()

Python-seaborn 笔记整理_第17张图片

记数图
sns.countplot(x="deck", data=titanic, palette="Greens_d")
点图
sns.pointplot(x="class", y="survived", hue="sex", data=titanic, palette={"male":"g","female":"m"}, markers=["^","o"], linestyles=["-","--"])

你可能感兴趣的:(python',数据科学,统计学,python)