颜色图中的 -Inf —— MATLAB 中低,Python 中高?

2024-03-07

我已将一些 MATLAB 代码移植到 Python,其中包括一个绘图实用程序,用于绘制 2D 矩阵(列表)中某些数据的颜色图。 MATLAB 和 Python 绘图实用程序非常相似,因此我可以毫不费力地使它们在视觉上非常接近地匹配。

我在这里使用的测试矩阵是:

X = [ 1  0  3 ]
    [ 4  5  6 ]
    [ 7  8  9 ]

带有测试矩阵的 MATLAB

X = [1 0 3;
     4 5 6;
     7 8 9];
figure(1);
imagesc(X);
colormap(hot);
colorbar;

Python 与测试矩阵

import numpy as np
import matplotlib as plt

X = [ [1,0,3] , [4,5,6] , [7,8,9] ]
fig = []
fig.append( plt.figure(1) )
plt.imshow(X, cmap='hot', interpolation='nearest', aspect='auto')
plt.colorbar()
fig[0].show()

当我转换为 dB(取每个元素的 log10 并乘以 10)时,就会出现这个问题,这给出了 dB 测试矩阵

Y = [  0.0000    -Inf        4.7712 ]
    [  6.0206     6.9897     7.7815 ]
    [  8.4510     9.0309     9.5424 ]

带有 dB 测试矩阵的 MATLAB

Y = 10*log10(X)
figure(2);
imagesc(Y);
colormap(hot);
colorbar;

Python 与 dB 测试矩阵

Y = 10*np.log10(X)
fig.append( plt.figure(2) )
plt.imshow(X, cmap='hot', interpolation='nearest', aspect='auto')
plt.colorbar()
fig[1].show()

顶部中间元素有什么用?它是-Inf,应该被认为是一个低值。在 MATLAB 中,它设置为等于数组中存在的最小值,在本例中为 0。这是有道理的,因为虽然 -Inf 低于 0,但如果我们使用它的“实际值”,它会破坏缩放比例。

另一方面,Python 将此 -Inf 值解释为高值,将其设置为等于数组中的最高值 - 9.5424。如果这个值只是 Inf,这对我来说是完全有意义的。然而,它绝对是-Inf,因为它应该是。为什么这里存在差异,我可以在不影响其他任何事情的情况下修复它吗?

编辑:显然我可以用 Inf 替换所有 -Inf,找到矩阵的最小值,然后用最小值替换所有 Inf。但是,我正在处理大型数据集,因此执行此操作并保持原始数据完整并不是特别有效。理想情况下,有一种方法可以改变绘图工具解释无限值的方式。


Python isn't绘图-Inf作为颜色图的最高颜色。它根本就没有绘制它。您可以通过切换到其中没有白色的颜色图来确认,例如'cool':

plt.imshow(Y, cmap='cool', interpolation='nearest', aspect='auto')
plt.show()

Python 句柄-Inf(也Inf and NaN)在图像中通过不渲染该补丁,使轴颜色从后面显示出来。使用时imagesc https://www.mathworks.com/help/matlab/ref/imagesc.html, MATLAB 集-Inf (and NaN)到最低的颜色图值和Inf到最高的颜色图值。使用时pcolor https://www.mathworks.com/help/matlab/ref/pcolor.html, MATLAB 处理NaN类似于 Python 的值,但不渲染它们。

看起来您必须将数组中的非有限值替换为有限值才能渲染它们。或者也许你可以使用掩码数组 https://stackoverflow.com/q/2578752/52738.

如果你只是想解决这个问题specific例如(将任何非有限值设置为黑色),您可以使用set_bad http://matplotlib.org/api/colors_api.html#matplotlib.colors.Colormap.set_bad颜色图的方法:

cmap=plt.cm.hot
cmap.set_bad('k')
plt.imshow(Y, cmap=cmap, interpolation='nearest', aspect='auto')
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

颜色图中的 -Inf —— MATLAB 中低,Python 中高? 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • python:查找围绕某个 GPS 位置的圆的 GPS 坐标的优雅方法

    我有一组以十进制表示的 GPS 坐标 并且我正在寻找一种方法来查找每个位置周围半径可变的圆中的坐标 这是一个例子 http green and energy com downloads test circle html我需要什么 这是一个圆
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐

  • 我可以将 Sailsjs 部署到 AppHarbor 或 Heroku 吗?

    AppHarbor 使用 iisnode 支持 Node 我现在可以将 Sails js 应用程序部署到 AppHarbor吗 如果可以 如何部署 老实说 我不知道我在节点部署方面做了什么 但我正在尝试遵循我在网上阅读的内容 当我将代码部署
  • ACAccountCredential 为 oauthToken 返回 null

    我通过以下方式访问用户的 Facebook accStore requestAccessToAccountsWithType fbAccountType options options completion BOOL granted NSE
  • 如何在本地使用 Lambda Layers 测试 AWS SAM 应用程序?

    我正在使用 AWS SAM 和 API Gateway 创建一个 API 以将请求传递到多个 Lambda 处理程序函数 我在它们之间共享代码 因此我想使用 Lambda 层来避免重写冗余代码 在创建任何实际的 AWS 资源之前 我首先在本
  • Vertex AI 模型批量预测、引用云存储上的现有模型和输入文件的问题

    我正在努力正确设置 Vertex AI 管道 该管道执行以下操作 从 API 读取数据并存储到 GCS 并作为批量预测的输入 获取现有模型 Vertex AI 上的视频分类 使用点 1 的输入创建批量预测作业 正如您将看到的 我对 Vert
  • 移动开发 - 本机 VS 跨平台 VS JavaScript [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • React Typescript:看起来您正在尝试使用 TypeScript,但没有安装 TypeScript

    我想创建一个 React 应用程序 并且想在这个应用程序中使用 typescript 首先我访问了 React 网站 以便使用 typescript 创建一个应用程序 我发现我必须先将此指令放入终端中 npx create react ap
  • 测试存储过程的最佳方法是什么?

    像许多要求所有访问都通过存储过程进行的公司一样 我们似乎有很多业务逻辑被锁定在存储过程中 这些东西实在是很难测试 而且有些已经变得愚蠢又长了 是否有人拥有一套最佳实践 可以让您更轻松地自信地测试这些东西 目前 我们维护着 30 个左右的 问
  • WPF 将文件从 Windows 资源管理器拖放到 TreeView 上

    我正在尝试制作一个非常简单的程序 或者我认为的程序 将文件从桌面 资源管理器拖放到 wpf 树视图上 此示例中的树视图很简单 因此我可以隔离遇到的拖放问题 我已经将所有地方的AllowDrop设置为True 但我仍然无法触发Drop或Dra
  • 如何在不离开页面的情况下更改浏览器中的 URL?

    我现在正在编写一个复杂的 AJAX 应用程序 整个网站都有干净的 URL 目前 PHP 为每个页面创建基本布局 但我不想在用户单击链接时离开每个页面 并且我不想在 URL 中包含哈希 因为它不会 与网站的其余部分不相符 我知道这个问题以前在
  • 从 2d numpy 数组的每一行中选择随机非零元素

    我有一个二维数组 a array 5 0 1 0 0 1 3 5 2 3 0 0 4 0 2 4 3 2 0 3 和一维数组 b array 1 2 1 2 2 which b 告诉我们要从数组的每一行中选择多少个非零元素a 例如 b 0
  • Notepad++ 缓存文件位置

    在最新版本的 Notepad 上 当应用程序关闭时 重新启动应用程序时会保留未保存的文件 我认为这些文件缓存在临时文件中 该文件的位置是什么 谢谢 我自己注意到了 并在里面找到了文件backup文件夹 您可以检查它在哪里使用菜单 设置 gt
  • 碰撞检测布料js

    我正在使用 Fabric js 我使用以下函数将图像放在画布上 当我单击画布时 图像会放置在该位置 我想知道是否有方法可以检查天气 那里已经存在某些东西我点击的位置 特别是如果有其他图像或没有 document getElementById
  • PHP 数组和 HTML 表单下拉列表

    我有一个名为 categories 的简单 PHP 数组 如下所示 Array Closed gt P1000 Open gt P1001 Pending gt P1002 In Progress gt P1003 Requires App
  • 如何使用 swift 调用 size_t os_proc_available_memory(void)

    我从来没有从 Swift 调用 Obj C 函数 而且我看到的大部分信息都是用于导入框架等 所以我很难理解如何获取我需要的数据 我想获得我的应用程序可用的总可用内存 我所能找到的就是https developer apple com doc
  • 如何使列表框水平滚动

    我有一个包含长字符串的列表框 The beginning is not all that relevant for the user which is why I d like to make the listbox scroll auto
  • 将登录表单与 Mechanize 结合使用

    我知道 Stackoverflow 上有与此非常相似的帖子 但我似乎仍然无法弄清楚我的尝试出了什么问题 login to the site mech get base URL do page l page form with action
  • winform的动态数据

    我玩过动态数据网站 winform 有类似的东西吗 如果没有任何东西可以对 winform 做同样的事情 那么问题是为什么不呢 我们有一个庞大的 ERP 应用程序 我们希望将其从 AS400 迁移到 Net Winform应用程序 我最初的
  • 宏元编程

    我知道这可能是坏的或不可能的 但由于这不是递归宏 我认为它应该是可能的 define FOO 15 define MAKE BAR x BAR x define MY FOO BAR MAKE BAR FOO 我希望 MY FOO BAR
  • 仅使用平移和旋转将一组 2d 点与另一组 2d 点对齐

    我正在 OpenCV 中工作 但我认为没有这方面的功能 我可以找到一个用于查找仿射变换的函数 但是仿射变换包括缩放 而我只想考虑旋转 平移 想象一下 我有两组 2d 点 假设每组恰好有 50 个点 例如 设 A x1 y1 x2 y2 x5
  • 颜色图中的 -Inf —— MATLAB 中低,Python 中高?

    我已将一些 MATLAB 代码移植到 Python 其中包括一个绘图实用程序 用于绘制 2D 矩阵 列表 中某些数据的颜色图 MATLAB 和 Python 绘图实用程序非常相似 因此我可以毫不费力地使它们在视觉上非常接近地匹配 我在这里使