显示矩阵值和颜色图
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]
才能正确对齐标签。
【讨论】:
非常感谢! :) 您能否解释一下更改文本标签索引顺序的步骤?为什么要改i
和j
?
这与您是否将数组索引视为 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)
【讨论】:
以上是关于显示矩阵值和颜色图的主要内容,如果未能解决你的问题,请参考以下文章