Matplotlib:增加ax.matshow的宽度/高度,并将颜色图(cmap)设置为透明

时间:2018-11-25 18:12:05

标签: python-2.7 matplotlib axes colormap

我有一个由随机值构成的矩阵,并用ax.matplot对其进行了绘制,其中每个矩阵单元的值都绘制在矩阵单元的中心,我需要增大图的大小( (特别是宽度),并将颜色图(cmap)设置为“透明”,其中矩阵图的单元格将为白色,而单元格中心的矩阵值将为黑色

代码:

import numpy as np
import matplotlib.pyplot as plt

low_dim = 0
high_dim = 20

matrix = np.random.randint(low_dim, high_dim, (high_dim,high_dim))
print (matrix)
fig, ax = plt.subplots()

ax.matshow(matriz, cmap=None,interpolation='nearest')

for i in xrange(20):
    for j in xrange(20):
        number = matrix[j,i]
        ax.text(i, j, str(number), va='center', ha='center')


plt.show()

编辑

代码(https://i.stack.imgur.com/e3mGO.png矩阵)中的matrix是用命令matrix = np.random.randint(low_dim, high_dim, (high_dim,high_dim))生成的矩阵,图片来自控制台。

我已经尝试更改fig,ax = plt.subplot()中的 figsize ,但是它没有任何改变。而且我还设置了cmap = none,但是什么也没发生。

另一个问题是,在第一张图片中,x和y轴的索引中的数字从0到15变化,并以5、5、10、15(I将其标记为红色)。但是在第二张图片(也用红色标记)中,值从0到19,没有步进。如果可能的话,我需要得出第二张图片的结果,索引从0到19不间断地变化。

图片1:我得到的东西: https://i.stack.imgur.com/mlExQ.png

图片2:我需要得到的东西: https://i.stack.imgur.com/T3CC4.png

1 个答案:

答案 0 :(得分:0)

matshow接受原点和alpha的参数。剩下的只是设置刻度和标签。

ax.matshow(matrix, origin='lower', alpha=0, cmap=None, interpolation='nearest')

tick_labels = range(high_dim)
ax.set_xticks([], minor=False)
ax.set_xticks(np.arange(-.5, 20, 1), minor=True)
ax.set_yticks([], minor=False)
ax.set_yticks(np.arange(-.5, 20, 1), minor=True)
ax.set_xticklabels([], minor=False)
ax.set_xticklabels(tick_labels, minor=True)
ax.set_yticklabels([], minor=False)
ax.set_yticklabels(tick_labels, minor=True)
ax.xaxis.set_ticks_position('bottom')
ax.grid(which='minor', color='grey', linestyle='-', linewidth=1)