前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matplotlib 直方图

matplotlib 直方图

作者头像
用户6021899
发布2019-08-14 16:14:12
2.1K0
发布2019-08-14 16:14:12
举报
文章被收录于专栏:Python编程 pyqt matplotlib

本篇介绍 matplotlib 中直方图的用法。直方图用来表示变量的分布特征。matplotlib 中用 hist() 函数用来绘制直方图。

我们先绘制一个简单的直方图:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
X = np.random.randint(0,101,1000)
plt.hist(X,color ="cyan",edgecolor='k')
plt.show()

hist()函数的参数中:

X 是长度为N的数组,表示单组数据;或者是长度为N的数组组成的序列,表示多组数据

color 表示 bar 中心区域的颜色

edgecolor 表示 bar 边缘的颜色

X为序列时,可显示多组数据的分布:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
X1 = np.random.randint(0,101,1000)
X2 = np.random.randint(0,101,1000)
plt.hist([X1,X2],color =["cyan","red"],edgecolor='k',label=["A","B"])
#为了容易区分,color可为与X长度相符的序列
#label是数据分组标签
plt.legend()
plt.show()

可以将多组数据的分布层叠显示:

代码语言:javascript
复制
plt.hist([X1,X2], stacked=True, color =["cyan","red"],edgecolor='k',label=["A","B"])

可以以step填充样式显示:

代码语言:javascript
复制
plt.hist([X1,X2],histtype='stepfilled',stacked= True, color =["cyan","red"],edgecolor='k',label=["A","B"]

可以自定义分割bins,根据bins决定的各个区间来显示分布特征。:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
X1 = np.random.randint(0,101,1000)
bins = [0,25,60,85,100]
plt.hist(X1,bins =bins, color ="b",edgecolor='k')
plt.xticks(bins)#设置x轴刻度和bins一致
plt.title("Histogram",fontsize=18,color="red")
plt.xlabel("x label...")
plt.ylabel("Qty.")
plt.show()

注意,除了最后一个区间([85,100]是闭区间外,其它区间都是左闭右开([0,25),[25,60),[60,85)):

可以显示归一化后的累积分布:

代码语言:javascript
复制
import matplotlib
from  matplotlib import ticker
import matplotlib.pyplot as plt
import numpy as np

matplotlib.rcParams["font.sans-serif"] = ["SimHei"]#设置全局字体
X1 = np.random.randint(0,101,1000)
w =np.ones_like(X1)#都为1
bins = [0,25,60,85,100]

#设置Y轴数据以百分比显示:
yticks = ticker.PercentFormatter(xmax=1, symbol='%', is_latex=True)
plt.gca().yaxis.set_major_formatter(yticks)

plt.hist(X1,bins =bins,weights= w,density=True,cumulative=True,histtype ="step",color ="b",edgecolor='r')
#可设置数据中每个数的权重,默认权重都为1
#density=True#归一化
#cumulative=True #累积

plt.xticks(bins)#可设置X轴的刻度线
plt.title("归一化的累积直方图示例",fontsize =18,color ="b")#可设置字的大小和颜色
plt.xlabel("x 轴标签",color ="b")
plt.ylabel("y 轴标签",color ="b")
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档