文章目录

  • 遇到的问题
  • 解决方法
  • 参考

3秒版本:

改成如下形式即可,去掉normed,改成density(布尔值),意思是开启概率分布(直方图面积为1).

plt.hist(hist_r, bins = 40, density=True,facecolor="red", edgecolor="black", alpha=0.7)

遇到的问题

今天在阅读《数字图像处理与python实现》一书中的图像直方图实验时,想绘制彩色图片三通道直方图,但是书中并没有给出源码。
只是给出了计算直方图的部分代码

# 计算直方图
hist_r = exposure.histogram(image[:, :, 0], nbins = 256)
hist_g = exposure.histogram(image[:, :, 1], nbins = 256)
hist_b = exposure.histogram(image[:, :, 2], nbins = 256)

然后在网上去搜寻三通道直方图的画法,还真找到了:python数字图像处理(9):直方图与均衡化
其中给出的方法是调用hist方法来绘制:

n, bins, patches = plt.hist(arr, bins=10, normed=0, facecolor='black',edgecolor='black',alpha=1,histtype='bar')

然后就按照这种方式来做,结果就是报错:

AttributeError: 'Rectangle' object has no property 'normed'

尝试删除normed,可以运行,结果如下:得到并不是归一化的直方图,和书中给的可视化图形也并不一致。

用于测试的代码

from skimage import exposure, io, data
from matplotlib import pyplot as plt
import matplotlib
import numpy as np# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号image = data.coffee()# 计算直方图
hist_r = exposure.histogram(image[:, :, 0], nbins = 256)
hist_g = exposure.histogram(image[:, :, 1], nbins = 256)
hist_b = exposure.histogram(image[:, :, 2], nbins = 256)plt.subplot(2, 2, 1)
plt.title("原图")
io.imshow(image)# data = np.random.randn(10000)
plt.subplot(2, 2, 2)
plt.title("R通道颜色直方图")
plt.hist(hist_r, bins = 40, facecolor="red", edgecolor="black", alpha=0.7)plt.subplot(2, 2, 3)
plt.title("G通道颜色直方图")
plt.hist(hist_g, bins = 40, facecolor="green", edgecolor="black", alpha=0.7)plt.subplot(2, 2, 4)
plt.title("B通道颜色直方图")
plt.hist(hist_b, bins = 40, facecolor="blue", edgecolor="black", alpha=0.7)plt.show()

解决方法

然后在stackoverflow和其他博文中翻阅了一下,最终还是打开了matplotlib 的开发文档
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.hist.html#matplotlib.pyplot.hist
这个hist是在matplotlib.pyplot下的:
这是hist函数原型

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)

其中关于density参数的解释

densitybool, default: False
If True, draw and return a probability density: each bin will display the bin’s raw count divided by the total number of counts and the bin width (density = counts / (sum(counts) * np.diff(bins))), so that the area under the histogram integrates to 1 (np.sum(density * np.diff(bins)) == 1).
If stacked is also True, the sum of the histograms is normalized to 1.

density是概率密度的开关,如果density=True,就是直方图归一化,面积加起来为1.

所以改成:

plt.hist(hist_r, bins = 40, density=True,facecolor="red", edgecolor="black", alpha=0.7)


代码

from skimage import data, io
import matplotlib
import matplotlib.pyplot as plt# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号image=data.coffee()
# flatten 将矩阵降维一维
hist_r=image[:,:,0].flatten()
hist_g=image[:,:,1].flatten()
hist_b=image[:,:,2].flatten()plt.subplot(2, 2, 1)
plt.title("原图")
io.imshow(image)# data = np.random.randn(10000)
plt.subplot(2, 2, 2)
plt.title("R通道颜色直方图")
plt.hist(hist_r, bins = 40, density=True,facecolor="red", edgecolor="black", alpha=0.7)plt.subplot(2, 2, 3)
plt.title("G通道颜色直方图")
plt.hist(hist_g, bins = 40, density=True,facecolor="green", edgecolor="black", alpha=0.7)plt.subplot(2, 2, 4)
plt.title("B通道颜色直方图")
plt.hist(hist_b, bins = 40, density=True,facecolor="blue", edgecolor="black", alpha=0.7)plt.show()

参考

[1]https://blog.csdn.net/qq_45069279/article/details/105636669
[2]https://blog.csdn.net/haoyu_xie/article/details/106814610
[3]https://matplotlib.org/stable/api/index.htmlmatplotlib参考API

python中matplotlib关于直方图AttributeError: ‘Rectangle‘ object has no property ‘normed‘的解决方法相关推荐

  1. 已解决AttributeError: ‘Rectangle‘ object has no property ‘laber‘

    已解决(matplotlib模块画柱状图报错)AttributeError: 'Rectangle' object has no property 'laber' 文章目录 报错信息 报错翻译 报错原 ...

  2. python3画直方图出现“Polygon‘ object has no property ‘normed”

    直方图原程序 import numpy as np import matplotlib.pyplot as pltnp.random.seed(0) mu,sigma = 100, 20 #均值和标准 ...

  3. 【Python】AttributeError: ‘DatetimeProperties’ object has no attribute ‘weekday_name’ 的解决方法

    运行下面的代码: import pandas as pd# 创建日期 dates = pd.Series(pd.date_range("2/2/2002", periods=3, ...

  4. Python中json.loads()无法解析单引号字符串问题的两种解决方法

    问题描述: 数据传输过程中数据存入数据库是将json文件默认转为字符串,所以导致从数据库中取出数据是字符串,需要用loads进行转化,但是转化的时候报错: json.decoder.JSONDecod ...

  5. 【Python 脚本报错】AttributeError: 'module 'yyy' has no attribute 'xxx'的解决方法

    先参考这篇记录大概理解了原因, 再深入了解下python的import机制, 发现自己的模块之间存在互相import. 比如,A.py中import B,而B.py中也import A了, 现在执行模 ...

  6. python中画图时x,y轴名称出现中文乱码的解决方法

    #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manage ...

  7. python中git克隆代码失败_使用Git clone代码失败的解决方法

    今天从GitHub上找到一份代码,想要clone到本地,便利用Git去clone代码,结果报了以下错误: error: RPC failed; curl 56 OpenSSL SSL_read: SS ...

  8. python调用so库输出传入指针_python中使用ctypes调用so传参设置遇到的问题及解决方法...

    问题 近日在做一组声纹聚类时,使用了另一团队同学开发的声纹距离算法.该算法对外提供的是一组so包,需要使用方自己去使用.在python中调用纯so包一般使用ctypes类库,用起来看起来简单但也有不少 ...

  9. python青蛙跳台阶_Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法

    前言 跳台阶.变态跳台阶.矩形覆盖其实都和斐波那契数列是一类问题,文中通过示例代码介绍的非常详细,下面话不多说了,来一起看看详细的介绍吧. 跳台阶 问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上 ...

最新文章

  1. NAND FLASH
  2. HI3519V101支持的sensor
  3. .net lucene 实战搜索(二)----- 基本之索引
  4. java set 空_Java面试总结(Map和Set)
  5. 温州大学计算机与人工智能学院2022年硕士研究生招生复试咨询开始啦!
  6. mysql之case_mysql存储过程之case语句
  7. 如何理解傅立叶级数、傅立叶变换公式?
  8. C#—Dev XtraTabControl操作总结如动态增加Tab和关闭选项卡方法等
  9. js检测是否安装java_js判断当前浏览器是否是源生app的webview
  10. STC学习:定时器和中断
  11. 关联性——组内相关系数
  12. js实现中文简体繁体转换
  13. Pygame实战:牛,几千行代码实现《机甲闯关冒险游戏》,太牛了(保存起来慢慢学)
  14. 网站流量模型(1)介绍
  15. 图解WLAN网络拓补结构
  16. 【SDPTWVRP】基于matlab头脑风暴算法求解带时间窗和同时取送货车辆路径问题【含Matlab源码 1990期】
  17. 阿里云实时计算产品经理李佳林:基于 Flink 构建大规模风控系统的技术实战
  18. Matlab绘制ROC曲线并计算AUC面积
  19. 做工程设计类计算机配置,专业设计制图需要什么样的电脑?制图电脑配置要求 (全文)...
  20. LoadRunner简单压力测试

热门文章

  1. 多线程-Thread-Runnable
  2. linux内核学习之四:进程切换简述
  3. JavaScript脚本放在哪里
  4. su一键封面插件_插件分享丨一键制作SU爆炸分析图插件分享
  5. 神经网络迭代次数与Lambert定律
  6. java snack_JSONPath小试牛刀之Snack3
  7. 【Python】调用百度云API人脸搜索服务 Face Search
  8. 【Paper】2021_Consensus Control of Leader-Following Multi-Agent Systems in Directed Topology
  9. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第4章-基于证据推理的多 Agent 分布式决策
  10. 1.11 为什么使用卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授