我假设我有一个非常简单的问题,在过去的一个小时里这个问题一直让我发疯。因此,我尝试生成具有以下轴长度 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()
最佳答案
这是 imshow
命令改变轴的纵横比,而不是颜色条。
imshow
假设您希望纵横比为 1.0,以便数据坐标中的正方形显示为正方形(即正方形像素)。
如果您希望它的行为像contour
,只需指定aspect='auto'
。
ax.imshow(z, cmap=cm.jet)
您还应该删除 ax.matshow
行(或使用它代替 imshow
)。事实上,您将拥有两个部分重叠并相互隐藏的图像。
如果您决定使用 matshow
而不是 imshow
,则需要为其指定 aspect='auto'
,如下所示好吧。
关于python - matplotlib:调整图像大小的彩条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989407/