数据可视化(6)-Seaborn系列 | 直方图distplot()
- 2019 年 10 月 7 日
- 筆記
直方图
seaborn.distplot() 直方图,质量估计图,核密度估计图
该API可以绘制分别直方图和核密度估计图,也可以绘制直方图和核密度估计图的合成图 通过设置默认情况下,是绘制合成图,设置情况图下:
hist=True:表示要绘制直方图(默认情况为True),若为False,则不绘制
kde=True:表示要绘制核密度估计图(默认情况为True),若为False,则绘制
函数原型
seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
参数解读
a: Series, 一维数组或列表 要输入的数据,如果设置name属性,则该名称将用于标记数据轴; 以下是可选参数: bins: matplotlib hist()的参数 或者 None 作用:指定直方图规格,若为None,则使用Freedman-Diaconis规则, 该规则对数据中的离群值不太敏感,可能更适用于重尾分布的数据。 它使用 bin 大小 [2∗IQR(X(:))∗numel(X)(−1/4),2∗IQR(Y(:))∗numel(Y)(−1/4)][2∗IQR(X(:))∗numel(X)(−1/4),2∗IQR(Y(:))∗numel(Y)(−1/4)] , 其中 IQR 为四分位差。 hist:bool 是否绘制(标准化)直方图 kde:bool 是否绘制高斯核密度估计图 rug:bool 是否在支撑轴上绘制rugplot()图 {hist,kde,rug,fit} _kws:字典 底层绘图函数的关键字参数 color:matplotlib color 该颜色可以绘制除了拟合曲线之外的所有内容 vertical:bool 如果为True,则观察值在y轴上,即水平横向的显示
案例教程
import seaborn as sns import numpy as np import matplotlib.pyplot as plt sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) """ 案例1:显示默认绘图,其中包含内核密度估计值和直方图 """ sns.distplot(x,kde=True,hist=False) plt.show()

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) # 使用pandas来设置x 轴标签 和y 轴标签 x = pd.Series(x, name="x variable") """ 案例2:绘制直方图和核函数密度估计图 """ sns.distplot(x) plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) """ 案例3:绘制核密度估计和地图 """ sns.distplot(x, rug=True, hist=False) plt.show()

from scipy.stats import norm import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) """ 案例4:绘制直方图和最大似然高斯分布拟合图 """ sns.distplot(x, fit=norm, kde=False) plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) """ 案例5:绘制水平直方图 (即在垂直轴上绘制分布) """ sns.distplot(x, vertical=True) plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) """ 案例7:改变绘图元素的颜色 """ sns.set_color_codes() sns.distplot(x, color="y") plt.show()

import seaborn as sns import matplotlib.pyplot as plt import numpy as np sns.set() #构建数据 np.random.seed(0) x = np.random.randn(100) # 制定一些绘图参数 sns.distplot(x, rug=True, rug_kws={"color": "g"}, kde_kws={"color": "k", "lw": 3, "label": "KDE"}, hist_kws={"histtype": "step", "linewidth": 3, "alpha": 1, "color": "g"}) plt.show()

案例地址
案例代码已上传:Github https://github.com/Vambooo/SeabornCN
整理制作:数据分析与可视化学研社
