Seaborn基于Matplotlib核心库进行了更高级的API封装,可以轻松地画出更漂亮的图形,而Seaborn的漂亮主要体现在配色更加舒服,以及图形元素的样式更加细腻。
1.可视化数据的分布 当处理一组数据时,通常先要做的就是了解变量是如何分布的。 •对于单变量的数据来说,采用直方图或核密度曲线是个不错的选择。
•对于双变量来说,可采用多面板图形展现,比如散点图、二维直方图、核密度估计图形等。
Seaborn中提供了一个distplot()函数,它默认绘制的是一个带有核密度估计曲线的直方图。
distplot(a, bins = None,hist = True,kde = True,rug = False, …)
参数 | 作用 |
---|---|
a | 表示要观察的数据 |
bins | 用于控制条形的数量 |
hist | 表示是否绘制(标注)直方图 |
kde | 表示是否绘制高斯核密度估计曲线 |
rug | 表示是否在支持的轴方向上绘制rugplot |
import seaborn as sns
import numpy as np
get_ipython().run_line_magic('matplotlib', 'inline')
sns.set() # 显式调用set()获取默认绘图
np.random.seed(0) # 确定随机数生成器的种子
arr=np.random.randn(100) #生成随机数组
ax=sns.distplot(arr,bins=10) #绘制直方图
如果希望使用Seaborn用Matplotlib的默认样式,则需要显式地调用set()或set_style()、set_context()和set_palette()中的一个或多个函数,以获取Seaborn或者Matplotlib默认的绘图样式。
# 创建包含500个位于[0,100]之间整数的随机数组
array_random=np.random.randint(0,100,500)
# 绘制核密度估计曲线
sns.distplot(array_random,hist=False,rug=True)
通过jointplot()函数可以创建一个多面板图形,以显示两个变量之间的关系及每个变量在单独坐标轴上的单变量分布。
seaborn.jointplot(x, y, data=None, kind=‘scatter’, color=None, size=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, …, **kwargs)
参数 | 作用 |
---|---|
kind | 表示绘制图形的类型 |
stat_func | 用于计算有关关系的统计量并标注图 |
color | 表示绘图元素的颜色 |
size | 用于设置图的大小 |
ratio | 表示中心图与侧边图的比例。 |
space | 用于设置中心图与侧边图的间隔大小 |
xlim,ylim | 表示x,y轴的范围 |
import pandas as pd # 创建DataFrame对象
dataframe_obj=pd.DataFrame({"x":np.random.randn(500),"y":np.random.randn(500)})
# 绘制散布图
sns.jointplot(x="x",y="y",data=dataframe_obj)
调用jointplot()函数时只要传入kind=“hex“可以绘制二维直方图。
# 调用jointplot()函数时只要传入kind=“hex”可以绘制二维直方图。
# 绘制二维直方图
sns.jointplot(x="x",y="y",data=dataframe_obj,kind="hex")
调用jointplot()函数时传入**kind=“kde”**可以绘制核密度估计图形。
# 核密度估计
sns.jointplot(x="x",y="y",data=dataframe_obj,kind="kde")
要想在数据集中绘制多个成对的双变量分布,则可以使用pairplot()函数实现,该函数会创建一个坐标轴矩阵,并且显示DataFrame对象中每对变量的关系。
# 加载seaborn中的数据集
dataset = pd.read_csv('d:/tips.csv')
# 绘制多个成对的双变量分布
sns.pairplot(dataset)
完整图片,好不好看吧
# 加载seaborn中的数据集
tips=pd.read_csv('d:/tips.csv')
# 绘制多个成对的双变量分布
sns.stripplot(x="day",y="total_bill",data=tips)