【问题标题】: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()

输出:

【问题讨论】:

    标签: python matrix matplotlib imshow


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2020-11-21
      • 1970-01-01
      • 2012-09-12
      相关资源
      最近更新 更多