python画分布、密度等图形
Python数据可视化-seaborn
10分钟python图表绘制 | seaborn入门(一):distplot与kdeplot
Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。
Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。
其有如下特点:
常用的参数
* x,y,hue 数据集变量 变量名
* date 数据集 数据集名
* row,col 更多分类变量进行平铺显示 变量名
* col_wrap 每行的最高平铺数 整数
* estimator 在每个分类中进行矢量到标量的映射 矢量
* ci 置信区间 浮点数或None
* n_boot 计算置信区间时使用的引导迭代次数 整数
* units 采样单元的标识符,用于执行多级引导和重复测量设计 数据变量或向量数据
* order, hue_order 对应排序列表 字符串列表
* row_order, col_order 对应排序列表 字符串列表
* kind : 可选:point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点
size 每个面的高度(英寸) 标量
aspect 纵横比 标量
orient 方向 "v"/"h"
color 颜色 matplotlib颜色
palette 调色板 seaborn颜色色板或字典
legend hue的信息面板 True/False
legend_out 是否扩展图形,并将信息框绘制在中心右边 True/False
share{x,y} 共享轴线 True/False
直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。
import numpy as np
import pandas as pd
from scipy import stats, integrate
import matplotlib.pyplot as plt #导入
import seaborn as sns
sns.set(color_codes=True)#导入seaborn包设定颜色
np.random.seed(sum(map(ord, "distributions")))
x = np.random.normal(size=100)
sns.distplot(x, kde=False, rug=True);#kde=False关闭核密度分布,rug表示在x轴上每个观测上生成的小细条(边际毛毯)
plt.show()
当绘制直方图时,你最需要确定的参数是矩形条的数目以及如何放置它们。利用bins可以方便设置矩形条的数量。如下所示:
sns.distplot(x, bins=20, kde=False, rug=True);#设置了20个矩形条
核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一。.由于核密度估计方法不利用有关数据分布的先验知识,对数据分布不附加任何假定,是一种从数据样本本身出发研究数据分布特征的方法,因而,在统计学理论和应用领域均受到高度的重视。
1.distplot()
sns.distplot(x, hist=False, rug=True);#关闭直方图,开启rug细条
sns.kdeplot(x, shade=True);#shade控制阴影
可以利用distplot() 把数据拟合成参数分布的图形并且观察它们之间的差距,再运用fit来进行参数控制。
x = np.random.gamma(6, size=200)#生成gamma分布的数据
sns.distplot(x, kde=False, fit=stats.gamma);#fit拟合
散点图是统计可视化的支柱。它描绘了使用点云的两个变量的联合分布,其中每个点代表数据集中的观察。因此观测两个变量之间的分布关系最好用散点图。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
## 定义主题风格
sns.set(style="darkgrid")
## 加载tips
tips = sns.load_dataset("tips")
## 绘制图形,根据不同种类的三点设定图注
sns.relplot(x="total_bill", y="tip", hue="smoker", style="time", data=tips);
plt.show()
## 绘制渐变效果的散点图
sns.relplot(x="total_bill", y="tip", hue="size", palette="ch:r=-.5,l=.75", data=tips);
plt.show()
eg:
## 设置颜色
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()
热点图是通过使用不同的标志将图或页面上的区域按照受关注程度的不同加以标注并呈现的一种分析手段,标注的 手段一般采用颜色的深浅、点的疏密以及呈现比重的形式。在数据分析中比较常用,如果离散数据波动变化比较大,那么可以使用热点图来观察波动变化,另外特别是在相关性和相关系数的应用中,特征和特征之间会存在相关 系数,常用的方式是采用Pandas求出相关系数,此时可以采用热点图来清晰地观察特征和特征之间的相关程度。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
np.random.seed(0)
sns.set()
## 热点图的绘制 ax = sns.heatmap(flights, cbar=False)
比较图主要适用于观察变量两两之间的关系。对角线是直方图(统计数量),其他的是散点图。
eg:采用的是鸢尾花的内部数据集
sns.set(color_codes=True)
iris = sns.load_dataset("iris")
sns.pairplot(iris)
plt.show()
regplot()和lmplot()都可以绘制回归关系,推荐regplot()。
两者间主要的区别是:regplot接受各种格式的x y,包括numpy arrays ,pandas series 或者pandas Dataframe对象。相比之下,lmplot()只接受字符串对象。这种数据格式被称为’long-form’或者’tidy’。除了输入数据的便利性外,regplot()可以看做拥有lmplot()特征的一个子集。
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")
## 使用regplot绘制
sns.regplot(x="total_bill", y="tip", data=tips)
plt.show()
eg:
anscombe = sns.load_dataset("anscombe")
sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'III'"),
robust=True, ci=None, scatter_kws={"s": 80})
plt.show()
类似于散点图,用于显示每一个数据的分布情况
eg:
tips = sns.load_dataset("tips")
sns.swarmplot(x="day", y="total_bill",hue="sex",data=tips)
plt.show()
set_style( )是用来设置主题的,Seaborn有五个预设好的主题: darkgrid , whitegrid , dark , white ,和 ticks 默认: darkgrid
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")
plt.plot(np.arange(10))
plt.show()
set( )通过设置参数可以用来设置背景,调色板等,更加常用。
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="white", palette="muted", color_codes=True) #set( )设置主题,调色板更常用
plt.plot(np.arange(10))
plt.show()