python - 如何在不使用“set_bad”的情况下在 matplotlib.pyplot 中显示具有特定颜色的矩阵
问题描述
我想创建一个矩阵的多个图像。我已经修改了matplotlib 中绘制网格模式的代码,它使用 cmap 属性“set_bad”将 Nan 值设置为透明白色。
有没有办法避免设置“set_bad”、“set_upper”和“set_lower”,以及准确地告诉颜色图要为矩阵值显示什么颜色?
如果我的矩阵是 2x2 填充的,我想要一个像这样的全白图像: 这就是问题所在。当矩阵值都为 1.0 时,图像是完全黑色的。(我猜是因为所有值都与 cmap 使用第一个值(黑色)呈现的值相同?)。
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np
N = 2
# make an empty data set
data = np.zeros((N, N))
for i in range(N):
for j in range(N):
# when all elements are 0 I want it to be black.
# Currently works how I want it to
#data[i,j] = 0
# When all elements are 1 I want it to be white but it is all black.
# This isn't working like I want it to.
data[i,j] = 1
# here I want to have white squares in the top left and bottom right.
# Currently works how I want it to
#data[0,0] = 1
#data[1,1] = 1
print(data)
# make a figure + axes
fig, ax = plt.subplots(1, 1, tight_layout=True)
# make color map
my_cmap = matplotlib.colors.ListedColormap(['black', 'white'])
# draw the grid
for x in range(N + 1):
ax.axhline(x, lw=2, color='k', zorder=5)
ax.axvline(x, lw=2, color='k', zorder=5)
# draw the boxes
ax.imshow(data, interpolation='none', cmap=my_cmap, extent=[0, N, 0, N], zorder=0)
# turn off the axis labels
ax.axis('off')
plt.show()
解决方案
推荐阅读
- swift - 调整为较小标题时,为什么我的导航栏下方有一个黑框?斯威夫特 5
- mysql - 需要将 1 行数据转置为 1 列但多行
- spring-boot - 为什么 RestTemplate 返回 ArrayList
而不是模型类型的真实列表? - php - 如何拆分带有奇怪字符的文本?
- kubernetes - 通过 AKS kubernetes 在 Hyperledger Fabric 1.4 中实例化链码时出错
- html - 如何用我的 awk 脚本填充 html 数组?
- android - 如何为谷歌播放控制台上传创建图标
- csv - 合并 2 个 csv 文件并从批处理文件中填充空值
- azure-devops - 有没有办法导出和导入板查询?
- json - JSON解析Windows文件路径