1

我假设我有一个非常简单的问题,在过去的一个小时里一直让我发疯。因此,我正在尝试生成具有以下轴长度 x=37,y=614 的等高线图。我可以生成等高线图没问题,但是当我添加一个颜色条时,图像的大小会调整为我假设的颜色条的大小。

没有彩条的图像:

在此处输入图像描述

带彩条的图像: 在此处输入图像描述

该图被调整大小,我不知道为什么。如何绘制一个像我的第一个图一样的图,但使用第二个图的配色方案和颜色​​条?

代码:

import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
from matplotlib import pylab


y = np.arange(1, 615)
x = np.arange(1, 37)

z = np.loadtxt('145_contact_matrix_605.txt')


fig = plt.figure()
ax = plt.subplot(111)
CS = ax.contour(x, y, z)
plt.clabel(CS, inline=1, fontsize=10)


# COLOUR BAR CODE
im_out = ax.imshow(z, cmap=cm.jet)
ax.matshow(z,cmap=plt.cm.jet)
axcolor = fig.add_axes([0.9,0.1,0.02,0.8]) # adjust these vaules to position colour bar
pylab.colorbar(im_out, cax=axcolor)

plt.show()
4

1 回答 1

1

这是imshow改变轴纵横比的命令,而不是颜色条。

imshow假设您想要 1.0 的纵横比,以便数据坐标中的正方形将显示为正方形(即正方形像素)。

如果您希望它表现得像contour,只需指定aspect='auto'.

ax.imshow(z, cmap=cm.jet)

您还应该删除该ax.matshow行(或使用它代替imshow)。实际上,您将拥有两个部分重叠并相互隐藏的图像。

如果您决定使用matshow而不是imshow,则还需要指定aspect='auto'它。

于 2013-06-07T17:18:21.360 回答