显示矩阵值和颜色图

Posted

技术标签:

【中文标题】显示矩阵值和颜色图【英文标题】:display matrix values and colormap 【发布时间】:2017-04-14 17:45:48 【问题描述】:

我需要使用 matshow 显示我的矩阵的值。 但是,使用我现在拥有的代码,我只得到两个矩阵 - 一个带有值,另一个带有颜色。 我如何强加它们?谢谢:)

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

min_val, max_val = 0, 15

for i in xrange(15):
    for j in xrange(15):
        c = intersection_matrix[i][j]
        ax.text(i+0.5, j+0.5, str(c), va='center', ha='center')

plt.matshow(intersection_matrix, cmap=plt.cm.Blues)

ax.set_xlim(min_val, max_val)
ax.set_ylim(min_val, max_val)
ax.set_xticks(np.arange(max_val))
ax.set_yticks(np.arange(max_val))
ax.grid()

输出:

【问题讨论】:

【参考方案1】:

您需要使用ax.matshow 而不是plt.matshow 以确保它们都出现在相同的轴上。

如果这样做,您也不需要设置坐标轴范围或刻度。

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

min_val, max_val = 0, 15

intersection_matrix = np.random.randint(0, 10, size=(max_val, max_val))

ax.matshow(intersection_matrix, cmap=plt.cm.Blues)

for i in xrange(15):
    for j in xrange(15):
        c = intersection_matrix[j,i]
        ax.text(i, j, str(c), va='center', ha='center')

在这里我创建了一些随机数据,因为我没有你的矩阵。请注意,我必须将文本标签的索引顺序更改为 [j,i] 而不是 [i][j] 才能正确对齐标签。

【讨论】:

非常感谢! :) 您能否解释一下更改文本标签索引顺序的步骤?为什么要改ij 这与您是否将数组索引视为 C 排序或 FORTRAN 排序有关。你可以在这里阅读:docs.scipy.org/doc/numpy/reference/…【参考方案2】:

在 Jupyter 笔记本中,这也可以使用 DataFrames 和 Seaborn:

import numpy as np
import seaborn as sns
import pandas as pd

min_val, max_val = 0, 15
intersection_matrix = np.random.randint(0, 10, size=(max_val, max_val))
cm = sns.light_palette("blue", as_cmap=True)
x=pd.DataFrame(intersection_matrix)
x=x.style.background_gradient(cmap=cm)
display(x)

【讨论】:

以上是关于显示矩阵值和颜色图的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB实现矩阵里数值的大小对应颜色的深浅

Power BI- 矩阵颜色自定义设置

openCV:从矩阵绘制颜色图

POWER BI 矩阵颜色自定义设置

如何在MATLAB中将3列矩阵绘制为颜色图?

在 R 中覆盖 10 个密度图,颜色与重叠图的数量成正比