matplotlib矩阵和图像的可视化表示

这篇具有很好参考价值的文章主要介绍了matplotlib矩阵和图像的可视化表示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

matplotlib教程:初步📈子图绘制📈坐标投影📈刻度设置📈共享坐标轴📈内容填充📈文字和字体

伪彩图

【plt】中提供了三种矩阵可视化函数,分别是imshow, matshow以及pcolormesh,相较之下,前两者比较相似,且imshow常被用做图片展示工具,所以matshoww这个函数基本没什么人知道,二者对比如下

matplotlib矩阵和图像的可视化表示,python教程,matplotlib,python,imshow,pcolormesh,图像处理,colorbar,contourf

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(5,5)

fig,axes = plt.subplots(1,2,figsize=(8,4))

axes[0].imshow(x)
plt.title("imshow")
axes[1].matshow(x)
plt.title("matshow")

plt.tight_layout()
plt.show()

左右两图几乎没有区别,并且矩阵中每个元素都是严格的方形,即其长宽比并不会随着图窗的变化而发生变化。

相比之下,pcolormesh就灵活很多,图中的每个元素均为长宽比可变的矩形,如果和text互相配合,就可以更加完美地表现矩阵,做到下图的效果

matplotlib矩阵和图像的可视化表示,python教程,matplotlib,python,imshow,pcolormesh,图像处理,colorbar,contourf

代码如下

def drawMat(x, ax=None):
    M, N = x.shape
    if not ax:
        ax = plt.subplot()
    arrM, arrN = np.arange(M), np.arange(N)
    plt.yticks(arrM+0.5, arrM)
    plt.xticks(arrN+0.5, arrN)
    ax.pcolormesh(x)
    ax.invert_yaxis()
    for i,j in product(range(M),range(N)):
        ax.text(j+0.2, i+0.55, f"{x[i,j]:.2}")
    plt.show()

x = np.random.rand(5,5)
drawMat(x)

等高线

伪彩图可以通过颜色来标注矩阵中每个元素的大小,从而对矩阵元素的整体分布情况有一个大致的了解。而有时,我们希望更加清晰地了解矩阵元素的分层情况,这时可采用等高线图contour和contourf,与伪彩图相比,个中差别如下

matplotlib矩阵和图像的可视化表示,python教程,matplotlib,python,imshow,pcolormesh,图像处理,colorbar,contourf

X, Y = np.indices([100,100])/30 - 1.5
Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)

fDct = {"contour": plt.contour, "contourf":plt.contourf,
    "pcolormesh" : plt.pcolormesh, "imshow":plt.imshow}

fig = plt.figure(figsize=(9,6))
for i,key in enumerate(fDct, 1):
    ax = fig.add_subplot(2,2,i)
    fDct[key](Z)
    plt.title(key)

plt.tight_layout()
plt.show()

colorbar

伪彩图通过伪彩色来表现矩阵元素的大小,而colorbar则标注了为彩图中的颜色映射值,一般来说,在【plt】绘图时,每个子图都可以设置其自身的色条,

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
for i in range(2):
    ax = fig.add_subplot(2,1,i+1)
    ax = plt.pcolormesh(np.random.rand(10,20))
    plt.colorbar()

plt.show()

matplotlib矩阵和图像的可视化表示,python教程,matplotlib,python,imshow,pcolormesh,图像处理,colorbar,contourf

由于上下两张图采用了相同的伪彩映射,所以这两个色条有些重复了,为了让图像更加简洁,从而产生了一张图一个色条的需求。

下面新建一个坐标轴,以单独设置色条位置

fig = plt.figure()
for i in range(2):
    ax = fig.add_subplot(2,1,i+1)
    im = plt.pcolormesh(np.random.rand(10,20))
    plt.axis('off')

# 指定colorbar的位置和大小
cax = fig.add_axes([0.92, 0.1, 0.02, 0.8])
fig.colorbar(im, cax=cax)
plt.show()

效果如下

matplotlib矩阵和图像的可视化表示,python教程,matplotlib,python,imshow,pcolormesh,图像处理,colorbar,contourf

这种处理方法有一个问题,即colorbar所在坐标系将无法控制,如果使用tight_layout来进行紧凑布局,那么左侧的图像会忽视色条铺满整个区域。

为了让色条可以在布局中维持不变,可通过GridSpec来进一步定制布局网格,

fig = plt.figure()

gs = plt.GridSpec(2, 2, width_ratios=[15, 1], height_ratios=[1, 1])

plt.subplot(gs[0, 0])
plt.title("A")
im = plt.pcolormesh(np.random.rand(10,20))
plt.axis('off')

plt.subplot(gs[1, 0])
plt.title("B")
im = plt.pcolormesh(np.random.rand(10,20))
plt.axis('off')

ax = plt.subplot(gs[:, 1])
fig.colorbar(im, cax=ax)
plt.show()

其中,width_ratios为横向的单元格宽度比例,height_ratios为纵向的单元格高度比例。绘图结果如下,这样一来,无论布局如何发生变化,左侧图形与右侧色条的宽度比值均为15:1,不会发生变化,从而在图像绘制时保证了风格的统一。

matplotlib矩阵和图像的可视化表示,python教程,matplotlib,python,imshow,pcolormesh,图像处理,colorbar,contourf文章来源地址https://www.toymoban.com/news/detail-838047.html

到了这里,关于matplotlib矩阵和图像的可视化表示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python可视化之Matplotlib

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在jupyter notebook中有2种图形展现形式 %matplotlib notebook:运行这句命令会在notebook中启动交互式图形 %matplotlib inline:运行这句命令会在notebook中启动静态图形 如果没有运行该命令,默认展示静态图形 展现变量

    2024年04月10日
    浏览(51)
  • #python# #Matplotlib# 常用可视化图形

    工作中,我们经常需要将数据可视化,分享一些Matplotlib图的汇总,在数据分析与可视化中是非常有用。 如下协一些常用图形。 安装相关插件 Scatteplot是用于研究两个变量之间关系的经典和基本图。如果数据中有多个组,则可能需要以不同颜色可视化每个组。在Matplotlib,你可

    2024年02月13日
    浏览(38)
  • 基于Python的疫情数据可视化(matplotlib,pyecharts动态地图,大屏可视化)

    有任何学习问题可以加我微信交流哦!bmt1014 1、项目需求分析 1.1背景 2020年,新冠肺炎疫情在全球范围内爆发,给人们的健康和生命带来了严重威胁,不同国家和地区的疫情形势也引起了广泛的关注。疫情数据的监测和分析对疫情防控和科学防治至关重要。本报告以疫情数据

    2024年02月05日
    浏览(58)
  • 头歌Python实训——matplotlib数据可视化

    任务描述 各省GDP的excel文件如图所示 编写一个程序,计算每年各省GDP信息的和,生成条状图显示 要求窗口大小10,10,图表标题为GDP条状图 相关知识 为了完成本关任务,你需要掌握: 1.数据汇总 2.matplotlib库的使用 3.如何建立条状图 4.设置图表参数 Dataframe数据汇总 dataframe对

    2024年02月03日
    浏览(61)
  • python学习——Matplotlib数据可视化基础

    官方网站:https://matplotlib.org/ 百度前端:https://www.echartsjs.com/zh/index.html plotly:可视化工具:https://plot.ly/python/ matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 实例1 实例2 子图 实例1 案例2 能够使用plt.hist方法的是那些没有统计过的数

    2024年02月10日
    浏览(44)
  • Python数据可视化之matplotlib绘图教程

    目录 一、快速绘图 1. 折线图 2. 柱状图 3. 饼状图 4. 散点图 5. 图片保存  二、基本设置 1. 图片 2. 坐标轴 3. 刻度 4. 边距 5. 图例 6. 网格 7. 标题 8. 文本 9. 注释文本 10. 主题设置 11. 颜色 12. 线条样式 13. 标记形状 三、绘图进阶 1. 折线图 2. 条形图  3. 散点图 4. 饼状图 5. 多图并

    2024年02月04日
    浏览(47)
  • Matplotlib:Python数据可视化的全面指南

    数据可视化是数据分析的一个重要方面,可以帮助我们有效地传达数据中的洞察和模式。Python提供了几个用于数据可视化的库,其中最突出和广泛使用的是Matplotlib。在本文中,我们将探索Matplotlib的基本概念和功能,并学习如何创建各种类型的图表和图形。 在深入了解Matplo

    2024年02月10日
    浏览(81)
  • 图像中部分RGB矩阵可视化

    今天室友有个需求就是模仿下面这张图画个示意图: 大致就是把图像中的一小部分区域的RGB值可视化了一下。他居然不知道该怎么画,我寻思这不直接秒了。 其实就是先画三个主图,一个全部的,一个小范围内的,一个RGB值的表,然后画四根线就完事了。效果如下: 唯一要

    2024年01月16日
    浏览(42)
  • Python-数据可视化:matplotlib模块、pyecharts模块

    返回Python系列文章目录 matplotlib 是一个基于python 的绘图库,完全支持二维图像,有限支持三维图形,Matplotlib是python编程语言及其数据科学扩展包NumPy的可视化操作界面库。 matplotlib模块 导入方式 可参考文章:Python之数据可视化——matplotlib系统介绍 Echarts 是一个由百度开源的

    2024年02月08日
    浏览(74)
  • python数据可视化神库:Matplotlib快速入门

    Matplotlib易于使用,是Python中了不起的可视化库。它建立在NumPy数组的基础上,旨在与更广泛的SciPy堆栈一起工作,并由几个图组成:线图、条形图、散点图、直方图等。 在上面的例子中,X和Y的元素提供了X轴和Y轴的坐标,并根据这些坐标绘制了一条直线。 Pyplot是一个Matplotli

    2023年04月27日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包