我有一个我想要显示的矩阵(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()
这是生成的图像(灰色线只是为了可视化大小):
答案 0 :(得分:0)
在aspect='auto'
的调用中使用plt.imshow
和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(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}}