-
函数功能:判定数据(或特征)的分布情况
-
调用方法:plt.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False)
-
参数说明:
-
x:指定要绘制直方图的数据;
-
bins:指定直方图条形的个数;
-
range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;
-
density:是否将直方图的频数转换成频率;
-
weights:该参数可为每一个数据点设置权重;
-
cumulative:是否需要计算累计频数或频率;
-
bottom:可以为直方图的每个条形添加基准线,默认为0;
-
histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;
-
align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;
-
orientation:设置直方图的摆放方向,默认为垂直方向;
-
rwidth:设置直方图条形宽度的百分比;
-
log:是否需要对绘图数据进行log变换;
-
color:设置直方图的填充色;
-
label:设置直方图的标签,可通过legend展示其图例;
-
stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放;
一、绘制简单直方图:
默认为频数图,即纵轴表示频数
可通过参数density = True绘制频率图:
二、多组数据直方图:
data = np.random.randn(1000,2)
plt.hist(x = data, # 绘图数据
bins = 20, # 指定直方图的条形数为20个
edgecolor = 'w', # 指定直方图的边框色
color = ['c','r'], # 指定直方图的填充色
label = ['第一组','第二组'], # 为直方图呈现图例
density = False, # 是否将纵轴设置为密度,即频率
alpha = 0.6, # 透明度
rwidth = 1, # 直方图宽度百分比:0-1
stacked = False) # 当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放
ax = plt.gca() # 获取当前子图
ax.spines['right'].set_color('none') # 右边框设置无色
ax.spines['top'].set_color('none') # 上边框设置无色
# 显示图例
plt.legend()
# 显示图形
plt.show()
当参数stacked = True时:
三、绘制累计频率直方图
:通过参数cumulative = True绘制
data = np.random.randn(1000)
plt.hist(data, # 绘图数据
bins = 20, # 指定直方图的组距
density = True, # 设置为频率直方图
cumulative = True, # 积累直方图
color = 'steelblue', # 指定填充色
edgecolor = 'w', # 指定直方图的边界色
label = '直方图')# 为直方图呈现标签
# 设置坐标轴标签和标题
plt.title('累计频率直方图')
plt.xlabel('x轴')
plt.ylabel('累计频率')
# 显示图例
plt.legend(loc = 'best')
# 显示图形
plt.show()
四、密度图(频率图):
密度图经常跟直方图一起使用,而在matplotlib中没有单独绘制密度图的函数,笔者目前知道两种绘制密度图的方法:
1)通过pandas(数据分析与统计模块),将数据转换成series或dataframe,然后绘图:
import pandas as pd
x = np.random.randn(1000)
data = pd.Series(x) # 将数据由数组转换成series形式
plt.hist(data,density = True,edgecolor ='w',label = '直方图')
data.plot(kind = 'kde',label = '密度图')
# 显示图例
plt.legend()
# 显示图形
plt.show()
2)通过seaborn(matplotlib的高级接口模块)的kdeplot函数绘制密度图:
import seaborn as sns
x = np.random.randn(1000)
plt.hist(data,density = True,edgecolor ='w',label = '直方图')
sns.kdeplot(x,label = '密度图')
# 显示图例
plt.legend()
# 显示图形
plt.show()
(1)
hist
type参数(设置样式bar、barstacked、step、stepfilled)
(2)range参数(指定
直方图
数据的上下界,默认包含绘
图
数据的最大值和最小值(范围))
(3)orientation参数 (设置
直方图
的摆放位置,vertical垂直方向 horizontal水平方向,默认值:vertical垂直方向)
(4)density参数(bool值
📊【
plt
.
hist
直方图
精通指南】🎯从
Matplotlib
可视化
小白到高手的跃迁之路!🚀
🔥一文掌握
plt
.
hist
()绘制
直方图
的精髓!📈从基础到进阶技巧,带你玩转
数据可视化
!🎨
🌟轻松掌握自定义
直方图
外观,让你的
图
表脱颖而出!💡多组数据同
图
展示,一
图
胜千言!📊
📚参考文档和相关链接一应俱全,助你快速成长为
数据可视化
达人!🌱
🚀无论你是数据分析师、数据科学家还是机器学习爱好者,这篇文章都是你的不二之选!💪
快来加入我们,一起探索数据背后的故事。
plt
.
hist
():
直方图
,一种特殊的柱状
图
。
将统计值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。
直方图
也可以被归一化以显示“相对”频率。 然后,它显示了属于几个类别中的每个类别的占比,其高度总和等于1。
import
matplotlib
as mpl
import
matplotlib
.pyplot as
plt
from
matplotlib
.pyplot import
plt
.
hist
()具体作用:
如
图
所示,左栏是数字value。右栏是频数frequency。现在我将0~5这个区间划分为10个bin(箱子),每个箱子的大小都为0.5。如下
图
最右侧所示。
可以看到,
图
中的数字所对应的频数会按照Bins的所标识的数字的不同进行相加。
plt
.
hist
()也就是这个作用。将一个大区间划分为等间隔的小区间,并统计每个区间上样本出现的频数之和。
reviews = pd.read_csv('fandango_scores.csv')
cols = ['FILM', 'RT
bins是一个int型数字,表示分成几份
interval = (a_max-a_min)/bins,表示每份的长度
生成[a_min, a_min+interval, a_min+interval2,…,a_min+intervalbins]的坐标轴
统计的时候,除了最后一份两端包含,其他的只有左包含,如下
图
所示:
np.
hist
ogram和
plt
.
hist
是类似的,前者返回的是值,后者画出
直方图
。
import
要画
直方图
,可以使用
Python
的
Matplotlib
库中的
hist
函数。在使用
hist
函数时,可以通过指定bins参数来设置数据的范围,例如:
```
python
import
matplotlib
.pyplot as
plt
import numpy as np
# 生成1000个随机数
data = np.random.randn(1000)
# 设置数据范围为[-3, 3]
bins = np.linspace(-3, 3, 21)
# 画
直方图
plt
.
hist
(data, bins=bins)
plt
.show()
在上面的代码中,通过np.linspace函数生成了一个范围为[-3, 3],包含21个数的数组,作为bins参数传递给了
hist
函数。这样就可以限定数据的范围了。
需要注意的是,在设置bins参数时,要根据数据的范围和数量来选择合适的值,以便展示数据的分布情况。如果bins设置过多或过少,都可能会导致
直方图
不够准确或者过于密集。
北风之神c:
目标检测项目中面对高分辨率图像的滑动窗口技术(一)(代码开源,超简便API封装,直接调用进行切图及保存)
B580066:
YOLOV5 6.x 使用cutout数据增强
CC_i:
目标检测项目中面对高分辨率图像的滑动窗口技术(二)(代码开源,超简便API封装,直接调用进行切图及保存)
小文大数据:
目标检测项目中面对高分辨率图像的滑动窗口技术(二)(代码开源,超简便API封装,直接调用进行切图及保存)
小文大数据: