matplotlib可视化之直方图plt.hist()与密度图

2023-11-03

  • 函数功能:判定数据(或特征)的分布情况
  • 调用方法: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()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib可视化之直方图plt.hist()与密度图 的相关文章

随机推荐

  • @Scheduled定时任务管理界面

    1 产生的背景 因这家公司多个项目里面都是基于 Scheduled来做定时任务 零零散散有十几个任务在跑 这些任务没有一个统一的界面去管理起来 比如 暂停 删除或者手动执行一次等 基于这些产生了schedule starter组件的开发 2
  • 关闭多个activity

    关闭多个activity Android程序有很多Activity 比如说主窗口A 调用了子窗口B 在B中如何关闭整个Android应用程序呢 首先要说明在B中直接使用finish 接下来手机显示的还是主窗口A 所以一起来看看Android
  • Python3标准库漫游之Typing.overload

    Python3标准库漫游之Typing overload Python3 gt 3 5 Python3 5开始Python把Typing作为标准库引入 低版本可以使用独立的Typing包 问题来源于一个QQ群友的提问 顺着问题我看了下Typ
  • Tex: The top-level auxiliary file: *.aux I couldn't open style file IEEEtran.bst 解决方法

    参考 Bibliography is not printed using Kile on Ubuntu Tex The top level auxiliary file aux I couldn t open style file IEEE
  • 分享一个基于微信小程序的汽车租赁小程序 车辆出租小程序 汽车租借小程序源码 lw 调试

    作者 计算机源码社 个人简介 本人七年开发经验 擅长Java Python PHP NET 微信小程序 爬虫 大数据等 大家有这一块的问题可以一起交流 学习资料 程序开发 技术解答 文档报告 如需要源码 可以扫取文章下方二维码联系咨询 Ja
  • 解决swiper在标签页里面 先隐藏后显示 之后 的一系列问题

    方法一 当页面很简单的时候 比如 页面时只有一个标签页 那么我们直接用最简单的方法 直接看官网就可以啦API就可以啦 里面提供了API gt http www swiper com cn api observer 218 html 如下就是
  • 福禄克DSX2-5000、DSX2-8000威测2系列功能简介

    福禄克DSX2 5000 DSX2 8000威测2系列功能简介 福禄克新一代铜缆测试仪DSX2 5000 DSX2 8000 属于Versiv系列手持式测试平台 采用模块化设计 DSX2 5000 Level V五级精度 1200MHz 线
  • #pragma comment (lib, "ws2_32.lib") 调用报错

    pragma comment lib ws2 32 lib 调用报错 最近用c实现tcp链接时参考别人的代码中发现如下代码 pragma comment lib ws2 32 lib ide用的dev 无法编译通过 查找相关资料了解到 pr
  • IDE Eval Reset 插件安装使用

    IDE Eval Reset 插件 Jetbrains家的产品有一个很良心的地方 他会允许你试用30天 这个数字写死在代码里了 以评估是否你真的需要为它而付费 事实上有一款插件可以实现这个功能 你或许可以用它来重置一下试用时间 但切记不要无
  • 云服务器 文件管理,云服务器文件管理工具

    云服务器文件管理工具 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 为安全起见 用户登录弹性云服务器时建议使用密钥对方式
  • vue3 setup语法糖 简单使用

    文档 Vue3 组合式 API 文档 介绍 Vue js vuejs org Vue3 单文件组件
  • MyBatis中foreach使用

    目录 1 foreach中的属性说明 2 collection属性的详细说明 3 示例 1 传入的是单参数且参数类型是一个List 2 传入的是单参数且参数类型是一个array数组 3 传入的参数是实体类 并且实体中包含数组和集合 4 传入
  • 实用工具篇(三):Free Mybatis plugin

    实用工具篇 三 Free Mybatis plugin 实用工具篇 一 Postman 实用工具篇 二 SourceTree Free Mybatis plugin 老规矩先吹一波 这个idea里面的插件真的十分nice 上个图让你们知道他
  • Scrum敏捷开发:适应变化的核心能力

    在当今高度变化的时代 软件开发的环境和要求也在不断变化 传统的开发方法往往难以适应这种快速变化 因此 一种新的软件开发方法 敏捷开发逐渐得到了广泛的关注和应用 本文将介绍敏捷开发的概念 优势 实践经验 敏捷开发工具以及注意事项 帮助您更好地
  • 解决vue-router跳转不起作用

    router 这么写 export default new Router mode history routes path homePage name HomePage component HomePage path topUpPage n
  • C++面向对象之封装

    C 在 C 语言的基础上增加了面向对象编程 C 支持面向对象程序设计 类是 C 的核心特性 通常被称为用户定义的类型 类用于指定对象的形式 它包含了数据表示法和用于处理数据的方法 类中的数据和方法称为类的成员 函数在一个类中被称为类的成员
  • CancelToken——取消请求

    CancelToken 取消请求 应用于第二次请求比第一次请求更快的情况 首先我们要明确 cancelToken是axios用来取消请求的API 那为什么要取消呢 是由于浏览器的请求的响应时间存在不确定性 请求次数过多可能较早发起的请求会比
  • docker - 部署java/python项目

    目录 1 docker 部署 java 项目 1 创建 mysql 容器 2 验证mysql dbserver 连接 mysql 服务器ip 3306 账户 root 密码 123456 3 创建tomcat容器 4 验证 http ip
  • 景联文科技助力医疗AI大模型:数据标注与专业医学资源的重要性

    随着通用人工智能 AI 与生成式人工智能 AIGC 的兴起 人工智能对一些产业的颠覆性影响开始显著加速 我们正在进入一个全新的 属于人工智能的时代 近日 谷歌对外发布谷歌医疗版ChatGPT已在多家诊所内测试 可生成诊断做总结 多个指标和真
  • matplotlib可视化之直方图plt.hist()与密度图

    函数功能 判定数据 或特征 的分布情况 调用方法 plt hist x bins 10 range None normed False weights None cumulative False bottom None histtype b