【发布时间】:2017-05-06 23:35:30
【问题描述】:
我有一个要显示的矩阵 (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()
这是生成的图像(灰线只是为了显示大小):
【问题讨论】:
-
尝试将
aspect='auto'添加到plt.imshow的调用中。这是你想要的吗? (见here) -
@Michael Hm,间距消失了,但现在每个像素都沿 y 轴“拉伸”了。
-
如果你既不想要大的空白空间也不想要拉伸像素,你应该尝试
plt.figure(figsize=(x,y))并制作一个更小的数字。 -
@Michael Ah,将两者结合使用就可以了。我分别尝试了两者,但我必须设置
aspect='auto'和figsize=(8,4)才能得到我想要的。谢谢!你会提供答案吗?
标签: matplotlib