matplotlib:颜色条调整大小图像?

时间:2013-06-07 17:01:47

标签: python matplotlib

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

没有彩条的图片:

enter image description here

带彩条的图片: enter image description here

这个数字变得很大,我不知道为什么。 我如何绘制像我的第一个数字,但使用第二个数字的颜色方案和颜色​​条?

代码:

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

1 个答案:

答案 0 :(得分:1)

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

imshow假设您希望宽高比为1.0,以便数据坐标中的正方形显示为方形(即方形像素)。

如果您希望它的行为类似contour,则只需指定aspect='auto'

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

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

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