1.核心函数及参数介绍

histplot(data,x,y,hue,weights,stat,bins,binwidth,binrange,shrink,cumulative,kde,palette,color,legend,element,fill,log_scale,multiple)常用参数:data--要绘制的数据,为DataFrame、数组、序列等类型,可缺省;x--上述data中的列索引或者直接给定横坐标的取值,同时指定了绘制横向直方图;y--上述data中的列索引或者直接给定纵坐标的取值,同时指定了绘制纵向直方图;hue--分组变量,生成具有不同颜色的行,可以为分类或者数字,往往取值为data中的列索引;wieghts--权重,如若给出权重,则在统计数据时将考虑权重的影响;stat--默认为'count'即显示数量,设置为'frequency'则显示频率,设置为'density'则显示密度即使直方图面积为1,设置为'probability'则使柱子高度为1;bins--划分区间的数量即柱子的数量;binwidth--柱子的宽度;binrange--柱子边缘的最小和最大值;shrink--各柱子之间的间隔,默认为1即无间隔,如果给定值小于1,则柱子之间有间隔,且取值越小,间隔越大,如果给定值大于1,则各柱子之间会有一定程度重叠;cumulative--设置为True则显示累积直方图;kde--设置为True则同时绘制密度曲线,默认为False即不显示密度线;palette--颜色面板;color--直方图颜色;legend--图例,设置为False则不显示图例;element--直方图形状,可取值为'bars','step','poly'分别代表柱形、阶梯形、峰形;fill--是否填充直方图,默认True即填充,设置为False则不填充;log_scale--是否用对数坐标,默认为False,设置为True则利用对数坐标;multiple--多个变量的显示方式,可取值为'layer', 'dodge', 'stack', 'fill'分别代表多图层、多列、堆叠、各组共同填充直方图;

2.实例展示

实例所用数据为seaborn库自带数据集penguins.csv文件,前5行数据如下,前两列以及最后一列数据为分类数据,中间4列为数值型数据,数据中存在缺失值,全部数据共344行7列。




直方图纵轴设置为频率 r语言 频率直方图的纵坐标_取值


将数据传递给函数中x参数,即绘制横向直方图。

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns# 读取已下载的seaborn库数据fname = 'penguins.csv'data = pd.read_csv(fname)sns.histplot(data=data, x="flipper_length_mm")plt.show()


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_数据_02

上述代码结果图


将数据传递给函数中y参数,即绘制纵向直方图。

# 仅修改该行代码sns.histplot(data=data, y="flipper_length_mm")


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_直方图_03

上述代码结果图


设置函数中kde参数,可同时显示密度线。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm",kde=True)


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_取值_04

上述代码结果图


函数中参数stat控制纵坐标显示方式,默认显示频数,可通过设置该参数显示频率、概率等。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm", stat='probability')


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_数据_05

上述代码结果图


设置函数中shrink参数,使各柱子之间呈现一定间距。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm", shrink=0.8)


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_取值_06

上述代码结果图


函数中bins参数控制柱子数量。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm", bins=8)


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_直方图纵轴设置为频率 r语言_07

上述代码结果图


函数中binwidth参数控制每个柱子的宽度。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm", binwidth=1.5)


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_直方图设置坐标_08

上述代码结果图


函数中element参数控制直方图的形状。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm", element='step')


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_直方图纵轴设置为频率 r语言_09

上述代码结果图


函数中fill参数控制是否填充直方图。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm", fill=False)


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_数据_10

上述代码结果图


函数中multiple参数控制各组显示方式,可分层显示、堆叠显示、分组显示、各组共同填充柱子至同一高度等。

# 仅修改该行代码sns.histplot(data=data, x="flipper_length_mm",hue="species",multiple='stack')


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_数据_11

上述代码结果图


设置函数中multiple参数为dodge即分组显示。

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfname = 'tips.csv'data = pd.read_csv(fname)sns.histplot(data=data, x='day', hue='sex', multiple='dodge', shrink=0.6)plt.show()


直方图纵轴设置为频率 r语言 频率直方图的纵坐标_数据_12

上述代码结果图