python - matplotlib:调整图像大小的彩条?

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

最佳答案

这是 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/

相关文章:

python - 在 python (Linux) 中触摸一个目录

Python 3d 绘图设置固定色阶

python - 函数为通过的 pandaDF 列制作具有正态曲线的直方图

python - 使用 DataFrame 绘制双轴图

python matplotlib : how to use fill_between with a colormap to fill the background of a 2d plot?

python - 使用MSER作为关键点检测器并使用SIFT作为描述符

python - Flask 多个 URL 处理程序部分处理 URL

python - 2^i-1 形式数字的 GCD

python - 使用 Dataflow + Beam + Python 从 Google Cloud Storage 读取 Shapefile

python - matplotlib 可拖动图例在 Mac OS 10.8 上不可用吗?