Python 强制颜色贴图为正方形

Python 强制颜色贴图为正方形,python,matplotlib,colormap,Python,Matplotlib,Colormap,我正在使用matplotlib库处理Python,但我在颜色映射维度方面遇到了问题 我有一个目标变量target,它取决于两个变量x和y——也就是说,我的数据target是一个矩阵,变量x是行,变量y是列。我想在关于x和y的彩色地图中表示target。问题是x的值比y的值多,因此如果我绘制一个颜色贴图,我会得到一个矩形-一个相当难看的矩形,因为x的值比y的值多得多 我宁愿在颜色贴图和正方形贴图中使用矩形“像素”,而不是正方形“像素”,而是矩形颜色贴图-或者至少我想比较这两种可视化效果 我的问题是

我正在使用
matplotlib
库处理Python,但我在颜色映射维度方面遇到了问题

我有一个目标变量
target
,它取决于两个变量
x
y
——也就是说,我的数据
target
是一个矩阵,变量
x
是行,变量
y
是列。我想在关于
x
y
的彩色地图中表示
target
。问题是
x
的值比
y
的值多,因此如果我绘制一个颜色贴图,我会得到一个矩形-一个相当难看的矩形,因为
x
的值比
y
的值多得多

我宁愿在颜色贴图和正方形贴图中使用矩形“像素”,而不是正方形“像素”,而是矩形颜色贴图-或者至少我想比较这两种可视化效果

我的问题是:如何强制颜色贴图为正方形

这是我的当前代码-
cmap
变量只允许我定义自定义色阶:

import matplotlib.pyplot as plt
import matplotlib.pyplot as clr

target = ...

cmap = clr.LinearSegmentedColormap.from_list('custom blue', 
                                             ['#DCE6F1','#244162'],
                                             N=128)
plt.matshow(target, cmap=cmap)
plt.colorbar(cmap='custom blue')

你的
matplotlib
版本是什么? 如果它比
1.1.0
更新,则可以尝试以下操作:

fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(np.random.rand(32, 64), cmap='rainbow', aspect=2)
plt.show()

这将为您提供具有方形图形形状的矩形像素。
您应该用数据替换
np.random.rand(32,64)
,并定义您喜欢的纵横比。另外,请参考此。您可能会对其他解决方案感兴趣

安德烈亚斯的答案在我的电脑上有效。您可能会看到与代码稍有不同的结果,因为imshow()默认情况下会对图像进行插值,因此与matshow()相比,图片会有所不同。但是
方面
参数对这两个方面都有效。因此,要么将其馈送到matshow(),要么在imshow()中禁用插值:

fig = plt.figure()
ax = fig.add_subplot(111)
ax.matshow(np.random.rand(32, 64), cmap='rainbow', aspect=2)
plt.show()

fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(np.random.rand(32, 64), cmap='rainbow', aspect=2, interpolation="None")
plt.show()