【问题标题】:How to remove spacing from figure created with imshow()?如何从使用 imshow() 创建的图形中删除间距?
【发布时间】: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


【解决方案1】:

plt.imshow的调用中使用plt.figure(figsize=(8,4))aspect='auto'

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()

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2013-11-20
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多