matplotlib 直方图

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

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

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为序列时,可显示多组数据的分布:

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()

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

plt.hist([X1,X2], stacked=True, color =["cyan","red"],edgecolor='k',label=["A","B"])

可以以step填充样式显示:

plt.hist([X1,X2],histtype='stepfilled',stacked= True, color =["cyan","red"],edgecolor='k',label=["A","B"]

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

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)):

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

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()

原文发布于微信公众号 - Python编程 pyqt matplotlib(wsplovePython)

原文发表时间:2019-04-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券