如何从imshow()创建的图形中删除间距?

时间:2017-05-06 13:56:55

标签: matplotlib

我有一个我想要显示的矩阵(np.asarray(vectors).T),到目前为止,除了之外,所有内容都工作,图像在底部x轴下方有很多填充。

我尝试使用tight_layout(),但它绝对没有效果。

如何正确裁剪图像,以便没有太多的间距

import numpy as np
import matplotlib.pyplot as plt

# Creating fake data

topn = 15
nb_classes = 13
rows = 27
columns = nb_classes * topn    
labels = ['Class {:d}'.format(i) for i in range(nb_classes)]    
m = np.random.random((rows,columns))

# Plotting

plt.figure()
plt.imshow(m, interpolation='none')
plt.grid(False)    
plt.xlabel('Word', size=16)
plt.ylabel('Dimension', size=16)

ax = plt.gca() 
ax.yaxis.set_ticks_position("right")
ax.xaxis.set_ticks_position("top")

yticks = list()
for i in range(0, nb_classes):
    if i != 0:
        plt.axvline(i*n - 0.5, c='w')
    yticks.append((i*n - 0.5 + n/2))

plt.xticks(yticks, labels, rotation=90)    
plt.tight_layout()
plt.show()

这是生成的图像(灰色线只是为了可视化大小):

enter image description here

1 个答案:

答案 0 :(得分:0)

aspect='auto'的调用中使用plt.imshowimport numpy as np import matplotlib.pyplot as plt # Creating fake data topn = 15 nb_classes = 13 rows = 27 columns = nb_classes * topn labels = ['Class {:d}'.format(i) for i in range(nb_classes)] m = np.random.random((rows,columns)) # Plotting plt.figure(figsize=(8,4)) plt.imshow(m, interpolation='None', aspect='auto') plt.grid(False) plt.xlabel('Word', size=16) plt.ylabel('Dimension', size=16) ax = plt.gca() ax.yaxis.set_ticks_position("right") ax.xaxis.set_ticks_position("top") yticks = list() for i in range(0, nb_classes): if i != 0: plt.axvline(i*n - 0.5, c='w') yticks.append((i*n - 0.5 + n/2)) plt.xticks(yticks, labels, rotation=90) plt.tight_layout() plt.show()

{{1}}