python调用MATLAB库绘制直方图

本文介绍了Python中使用matplotlib库的hist函数绘制直方图的方法,直方图用于展示数据分布情况。通过设置边框颜色和不透明度,可以定制直方图的视觉效果。示例代码展示了如何根据给定的顾客人数数据绘制直方图。

直方图(histogram)虽然在样式上类似条形图,但它们的作用不一样。直方图用不同的矩形表示频数,常用来观察一组数据的概率分布。在直角坐标中,用横轴表示数据分组,纵轴表示频数或频率,各组与相应的频数就形成了一个个矩形,即直方图。

画直方图用到 pyplot 中的 hist 函数,它的基本语法为:

[n, bins, patches] = hist(x, [bins], **kwargs)

输入值:

x数组,需要绘制直方图的数值
[bins]可选参数,数据的组数,若不指定则 hist 函数默认计算一个组数
**kwargs不定长的关键字参数,用字典形式设置条形图的其他属性

返回值:

n一个数组,每组直方图的频数(或概率密度)
bins一个数组,直方图的边界数值
patches一个对象组,每个对象代表直方图的矩形

**kwargs 中常用来设置的属性包括直方的边界线颜色 edgecolor,不透明度 alpha 等。需要注意的是,hist 函数的三个返回值一般用来继续对数据进行分析,并不是必须要写或必须要使用的。

下面举例说明该函数,例如某个饭店每天接待的顾客数有以下记录值:

141159166172177182188196203214
143160167173177183189196203215
144160168173178184189196205218
149161168174178185189196206223
150161168174178186190196207225
152162170174179186190197208226
153163171175179187191197209228
153163171175179187192198210233
154164172175180187194198210233
155165172175180187194200211234
156165172176181188195201211234
158165172176182188195202213237

在 Phthon 中编写代码,并画出对应的直方图。

import matplotlib.pyplot as plt

x = [141, 159, 166, 172, 177, 182, 188, 196, 203, 214,
     143, 160, 167, 173, 177, 183, 189, 196, 203, 215,
     144, 160, 168, 173, 178, 184, 189, 196, 205, 218,
     149, 161, 168, 174, 178, 185, 189, 196, 206, 223,
     150, 161, 168, 174, 178, 186, 190, 196, 207, 225,
     152, 162, 170, 174, 179, 186, 190, 197, 208, 226,
     153, 163, 171, 175, 179, 187, 191, 197, 209, 228,
     153, 163, 171, 175, 179, 187, 192, 198, 210, 233,
     154, 164, 172, 175, 180, 187, 194, 198, 210, 233,
     155, 165, 172, 175, 180, 187, 194, 200, 211, 234,
     156, 165, 172, 176, 181, 188, 195, 201, 211, 234,
     158, 165, 172, 176, 182, 188, 195, 202, 213, 237]

plt.hist(x, edgecolor='k', alpha=0.35) # 设置直方边线颜色为黑色,不透明度为 0.35
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

显示图形:

在这里插入图片描述

### 使用 Matlab 根据给定数据生成直方图Matlab 中,可以利用内置函数 `histogram` 或者更传统的 `hist` 函数来生成直方图。以下是基于提供的引用以及常见实践方法的一个具体示例。 #### 示例代码 假设有一组随机数作为输入数据: ```matlab % 创建一组随机数据用于演示 data = randn(1000, 1); % 定义直方图的区间数量 (bins) numBins = 20; % 绘制直方图 figure; h = histogram(data, numBins, 'FaceColor', 'steelblue'); % 设置图形属性 title('数据分布直方图', 'FontSize', 15); xlabel('数值范围'); ylabel('频数'); grid on; ``` 上述代码实现了以下功能: - 首先创建了一组服从标准正态分布的随机数 `data`[^4]。 - 利用 `histogram` 函数绘制直方图,并指定区间的数量为 `numBins`[^4]。 - 对图表进行了美化设置,包括颜色填充 (`FaceColor`) 和网格线显示 (`grid on`)。 如果需要进一步调整样式或者添加更多细节(例如中文标签),可以通过如下方式扩展代码: ```matlab set(gca, 'FontName', 'SimHei'); % 设置字体支持中文 title('数据分布直方图', 'FontName', 'SimHei', 'FontSize', 15); xlabel('数值范围', 'FontName', 'SimHei'); ylabel('频数', 'FontName', 'SimHei'); ``` 以上部分借鉴了 Python 的 Matplotlib 实现风格[^3],并将其适配到 Matlab 环境下。 --- #### 关于图像灰度处理中的直方图应用 对于图像处理领域内的直方图操作,通常会涉及以下几个方面: 1. **读取图像**:通过 `imread` 加载图片文件[^2]。 2. **转换为灰度图**:使用 `rgb2gray` 将彩色图像转成灰度形式。 3. **计算像素强度分布**:调用 `imhist` 或者手动统计各亮度等级的数量。 4. **可视化结果**:借助 `bar` 或其他绘图工具展现最终效果。 下面是一个完整的例子: ```matlab % 加载原始图像 srcImage = imread('example_image.png'); % 如果是 RGB 图像,则转化为灰度图 if size(srcImage, 3) == 3 grayImage = rgb2gray(srcImage); else grayImage = srcImage; end % 计算灰度直方图 [counts, binLocations] = imhist(grayImage); % 展示直方图 figure; bar(binLocations, counts, 'FaceColor', 'darkgreen'); title('灰度图像直方图', 'FontSize', 15); xlabel('灰度级'); ylabel('像素数目'); grid on; ``` 此段脚本展示了如何针对一张实际存在的图片完成从加载至分析整个流程。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值