Python实现矩阵可视化的示例代码

 更新时间:2023年10月19日 09:53:22   作者:微小冷  
matplotlib中提供了两个矩阵可视化函数,分别是imshow和matshow,本文主要为大家详细介绍了如何使用这两个函数,感兴趣的小伙伴可以跟随小编一起学习一下

imshow和matshow

matplotlib中提供了两个矩阵可视化函数,分别是imshow和matshow,由于二者过于相似,且imshow常被用做图片展示工具,所以matshoww这个函数基本没什么人知道,总之二者对比如下

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()

但无论是imshow也好,还是matshow也罢,对矩阵,尤其是小矩阵,展示得并不完美,徒有伪彩色对应,而并无具体的数值,那么对于一些需要看到实际数值的场合,其表现力当然是不够的。

显示数值

所以接下来,就要在特定的格子中,写下矩阵的具体数值。

from itertools import product

M,N = 3,6
x = np.random.rand(M,N)

plt.matshow(x)
for i,j in product(range(M),range(N)):
    plt.text(j-0.15, i, f"{x[i,j]:.2}")

plt.show()

product是排列组合迭代器,可以将输入序列的元素两两组合在一起,从而避免循环嵌套。plt.text的作用就是显示数值,其中j表示x坐标,i表示y轴坐标。在矩阵索引中,i表示行号,j表示列号。

这张图当然也有问题,由于文字是横着写的,但矩阵中的格子却是正方形的,这个显然看上去不太和谐。如果用pcolormesh这种像素形状可以更改的函数,显然更加合适。

但pcolormesh有两个问题,一是坐标轴方向和矩阵下标的方向不符,二是坐标标签的位置并不指格点中间,为此需要稍加改造。

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)

其中,xticks和yticks用于重新映射坐标,将N.5映射为N,这样坐标位置也就转化为了具体数值;invert_yaxis表示y轴坐标翻转,从而直角坐标系被改为矩阵坐标系。

效果如下

到此这篇关于Python实现矩阵可视化的示例代码的文章就介绍到这了,更多相关python矩阵可视化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python攻防-破解附近局域网WIFI密码实现上网自由

    python攻防-破解附近局域网WIFI密码实现上网自由

    本文将记录学习如何通过 Python 脚本实破解附近局域网 WIFI 密码的暴力破解,随时随地免费蹭网,再也不被WiFi密码困扰,实现蹭网自由
    2021-08-08
  • Python开发工具PyCharm的下载与安装步骤图文教程

    Python开发工具PyCharm的下载与安装步骤图文教程

    这篇文章主要为大家介绍了Python开发工具PyCharm的下载与安装步骤图文教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • python中altair可视化库实例用法

    python中altair可视化库实例用法

    在本篇文章里小编给大家整理的是一篇关于python中altair可视化库实例用法,对此有兴趣的朋友们可以学习下。
    2021-01-01
  • PyQt5+PyQt5Designer的安装步骤

    PyQt5+PyQt5Designer的安装步骤

    本文主要介绍了PyQt5+PyQt5Designer的安装步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python编写漏洞验证脚本批量测试繁琐漏洞

    Python编写漏洞验证脚本批量测试繁琐漏洞

    这篇文章主要为大家介绍了Python编写漏洞验证脚本来批量测试繁琐的漏洞实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • Python实现本地缓存的几种方法小结

    Python实现本地缓存的几种方法小结

    缓存是一种常见的技术,用于存储重复请求的结果,Python 作为一种灵活的编程语言,提供了多种实现本地缓存的方法,本文将探讨 Python 中实现本地缓存的几种策略,并提供具体的代码示例,感兴趣的小伙伴跟着小编一起来看看吧
    2024-07-07
  • Python转换字典成为对象,可以用

    Python转换字典成为对象,可以用"."方式访问对象属性实例

    这篇文章主要介绍了Python转换字典成为对象,可以用"."方式访问对象属性实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python使用腾讯云API实现短信验证码功能

    Python使用腾讯云API实现短信验证码功能

    使用Python与腾讯云接口对接,实现短信验证码功能变得非常简单,只需要几行代码就能够轻松实现短信的发送,无须关心复杂的短信协议和底层实现,读者可以根据自己的实际需求,灵活使用腾讯云短信SDK提供的API来实现更丰富的短信功能
    2024-01-01
  • 通过selenium抓取某东的TT购买记录并分析趋势过程解析

    通过selenium抓取某东的TT购买记录并分析趋势过程解析

    这篇文章主要介绍了通过selenium抓取某东的TT购买记录并分析趋势过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python给定一个句子倒序输出单词以及字母的方法

    Python给定一个句子倒序输出单词以及字母的方法

    今天小编就为大家分享一篇Python给定一个句子倒序输出单词以及字母的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论