我想在imshow
中使用matplotlib
制作一个数字,我可以有效地设置宽度和高度。我以为我可以使用figsize
来做到这一点,但它的表现方式与我想象的一样。
例如,使用以下MWE:
import matplotlib.pyplot as plt
import numpy as np
N = 100
width = 20
height = 20
Z = np.random.random((width,height))
G = np.zeros((width,height,3))
# Here we set the RGB for each pixel
G[Z>0.5] = [1,1,1]
G[Z<0.5] = [0,0,0]
plt.figure(figsize = (2, 5))
plt.imshow(G,interpolation='nearest')
plt.grid(False)
plt.show()
这是我得到的:
例如,如果我将figsize = (2, 5)
更改为figsize = (2, 2)
,则比例不会改变!
在尝试了几个不同的值后,我认为这是因为图形被渲染为一个方框而不是一个矩形:无论我将figsize
设置为单个矩阵条目都是一个常量框。
是否有我可以使用的命令,例如告诉matplotlib扩展到例如800x400px
?
答案 0 :(得分:3)
imshow
的默认行为是将主轴的纵横比设置为等于&#39; (即数据单元中的正方形是屏幕空间中的正方形)。如果您不关心这一点,只需将方面设置为&#39; auto&#39;。
import matplotlib.pyplot as plt
import numpy as np
N = 100
width = 20
height = 20
Z = np.random.random((width, height))
G = np.zeros((width, height, 3))
# Here we set the RGB for each pixel
G[Z > 0.5] = [1, 1, 1]
G[Z < 0.5] = [0, 0, 0]
fig, ax = plt.subplots(figsize=(2, 5))
ax.imshow(G, interpolation='nearest')
ax.set_aspect('auto')
plt.show()