python - 关于 matplotlib.pyplot.matshow 和 np 矩阵对象的一些相关问题:绘制“None”/“nan”和 x 轴偏移
问题描述
假设我有以下矩阵(作为一个numpy.matrix
或np.array
对象):
#x/column labels: = -1, 0, 1
#y/row labels: 0, 1, 2 (like normal)
data: np.matrix([[1, 2, 3], [-1, np.nan, -2], [7, -5, -6]])
plt.matshow(data, colorbar = 'RdBu')
plt.colorbar()
plt.show()
我想plt.matshow()
在这个矩阵上使用。首先,我不知道为什么,但有时,np.matrix
如果我简单地将它们打印出来,我的对象会显示为这样(请忽略数字略有不同):
matrix([[ 1., 2., 3.],
[-1., nan, -2.],
[-3., 5., 2.]])
这些将被np.matshow()
. 但是有时它们看起来像这样:
matrix([[1, 2, 3],
[-1, nan, -2],
[7, -5, -6]], dtype=object)
第一个问题:
如果dtype=object
存在,np.matshow()
则不会在存在nan
or时绘制它们None
。我不知道为什么这个标签有时会出现有时不会出现。np.matrix(a)
我通过一个有点复杂的脚本生成这些,我怀疑有时可能是因为我正在做a
一些 python 数组或np.array
. 这可能是原因吗?我在终端窗口中玩过简单的案例,但无法弄清楚。有时“错误标记”是np.nan
,有时是 python 的None
.
第二个问题:当np.nan
矩阵中有 a 时,将matshow()
那个正方形涂成白色。如果使用的颜色图(如默认颜色图)不包括白色,则可以。但是,我想使用“二进制”类型的色标,例如RdBu
;蓝色为正,红色为负,0 为白色。有没有办法,例如,将一个大的绿色 X 放在nan
's 上,或使其方形黑色等?基本上,这是一种在此颜色图中清楚地区分nan
' 和 0 的方法。
第三个问题:请注意在我的第一个代码片段中 x/column 标签应该是-1, 0, 1
. 由于该np.matrix
对象似乎没有自定义索引,它只是从0
. 有没有办法将此信息传递给np.matshow
?例如,如果我使用plt.xlim([-1, 1])
它,它只显示矩阵的两行,因为在 处没有数据-1
,而第三行在 处x = 2
。
解决方案
您可以首先让您的返回一个 numpy 浮点数组,如下所示:
data = np.array(data).astype(np.float)
推荐阅读
- liferay - 缺少应用程序菜单 Liferay
- assembly - SRL 和 SRA 有什么区别?
- python-3.x - dlib 即使在确认它会在构建期间使用 CUDA 也不使用
- powershell - PowerShell - 返回的行为不符合预期
- c++11 - 打印 2d Vector 结果的内容而不将每个标记索引为一个
- html - 是否可以使用 HTML 和 CSS 在两行中使用不同字体的按钮文本?
- html - 与 CSS 相比,使用 ImageMagick 调整图像大小有什么好处?
- python - 从初始化程序运行实例方法时出现神秘的“额外参数”错误
- c++ - 有没有一种在 C++11 中为类似 JSON 的 trie 结构(仅限迭代解决方案)打印扁平命名空间的好方法?
- java - 我将使用什么表达式来保留此 switch 语句?