目录
1.关于直方图2.plt.hist()3. 绘制一幅简单的 频数 分布直方图4. 绘制一幅频率分布直方图5. 累积分布直方图(水平方向)1.关于直方图
直方图 也称 质量分布图,虽然看起来像柱状图,
实际上区别又很大。直方图通常横轴表示数据类型,纵轴表示各数据类型的分布情况。
直方图又可以分为频数分布直方图和频率分布直方图。其绘制方法并无多少差异,只是描述的事件有所不同。频数分布直方图描述的是某事件的数量,而频率分布则描述的是其发生的频率。
而关于频率分布直方图,又可以理解为是“密度图”的一种。频率分布直方图 和 密度图 都可以用来描述事件的概率分布,其中频率分布直方图描述的是离散型随机变量的概率分布,而密度图则描述的是连续型随机变量的概率分布。
2.plt.hist()
绘制直方图通过plt.hist()方法实现,其常用的参数有:
x 数据集
bins ------------- 统计数据的区间分布。可以是一个元素为数值的列表,也可以是一个数值。是一个数值的时候可以配合range参数使用。
range ----------- 元组类型,显示的区间。
当设置区间分布使用数值型的bins和range参数设定时:range确定一个范围,传入形式是一个元组(注意不是range范围对象),左右端点值都可取。数值型的bins表示将该范围分成的份数(等分)。
density --------- 布尔型,显示频率统计结果。默认为None(相当于False),设为False不显示频率统计结果;设为True则显示频率统计结果,即绘制出的图像由频数分布直方图变为频率分布直方图。
histtype -------- 可选参数,即直方图的类型。默认为bar,即绘制出的“柱状”条形。还可以设置为barstacked、step、stepfilled。
align -------------可选参数,控制柱状图的水平分布,设置值为left、mid 或 right,默认值为mid,也推荐使用mid。left和right会产生部分的空白区域。
log --------------- 布尔类型,默认为False,即y轴是否选择指数刻度。
stacked --------- 布尔类型,默认为False,表示是否为堆积柱状图。
edgecolor------- 设定边沿颜色
facecolor-------- 可以用来设定直方图的颜色,也可以简写为color。
orientation-------直方图的方向,默认为竖直方向上的(‘vertical’),设为’horizontal’则表示水平方向上的。
cumulative------默认为False,表示不累积。如果为True则设置累积分度直方图。
3. 绘制一幅简单的 频数 分布直方图
import matplotlib.pyplot as plt import numpy as np plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False plt.rcParams["axes.facecolor"] ="#cc00ff" # 设定随机数种子为30 np.random.seed(30) data = np.random.randint(0, 100, 100) plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor="#ffff00", edgecolor="#FF0000") plt.xlabel("X指标") plt.ylabel("样本个数") plt.title("X指标频数分布直方图") plt.show()
4. 绘制一幅频率分布直方图
将density设置为True即可·。
此外我们再修改一些细节,将histtype参数设置为stepfilled(梯状且填充)。
并把y轴的标签由“样本个数”改为“样本频率”。
import matplotlib.pyplot as plt import numpy as np plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False plt.rcParams["axes.facecolor"] ="#cc00ff" np.random.seed(30) data = np.random.randint(0, 100, 100) plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor="#ffff00", edgecolor="#FF0000", density=True, histtype="stepfilled") plt.xlabel("X指标") plt.ylabel("样本频率") plt.title("X指标频数分布直方图") plt.show()
图像效果如下:
5. 累积分布直方图(水平方向)
增加参数cumulative=True, orientation=‘horizontal’。
此外,因为图像变成了水平方向,所以也需要把x、y轴标签互换并稍作调整。
这里设置区间分布使用数值型的bins和range参数设定,范围为0-100,区间分割为10等份。
import matplotlib.pyplot as plt import numpy as np plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False plt.rcParams["axes.facecolor"] ="#cc00ff" np.random.seed(30) data = np.random.randint(0, 100, 100) plt.hist(data, bins=10, range=(0, 100), facecolor="#ffff00", edgecolor="#FF0000", density=True, cumulative=True, orientation="horizontal") plt.xlabel("样本累积频率") plt.ylabel("X指标") plt.title("X指标频数分布直方图") plt.show()
图像效果如下:
到此这篇关于基于Python+Matplotlib实现直方图的绘制的文章就介绍到这了,更多相关Python Matplotlib直方图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?