Python 个包含折线图和热图的子图

Python subplots containing line-graph and heatmaps

我想在一张图中绘制两个子图,一个是简单的线图 y = f(x),另一个是二维热图,like the one shown here.

但我想在第二个图中添加一个颜色条。我使用的代码是:

from pylab import*

fig = figure()
sub1 = fig.add_subplot(121)
sub2 = fig.add_subplot(122)

x=linspace(0,10,200)
y=exp(x)
sub1.plot(x,y)

x=linspace(-10,10,200)
y=linspace(-10,10,200)
xx,yy=meshgrid(x,y)
z=sin(xx)+cos(yy)
sub2.imshow(z)
sub2.colorbar()

show()

但这给出了错误信息

Traceback (most recent call last):
File "ques2.py", line 16, in <module>
    sub2.colorbar()
AttributeError: 'AxesSubplot' object has no attribute 'colorbar'

我能做什么?

并且在没有手动调整子图参数的情况下获得程序的输出is shown here。这两个地块的大小非常不等。有没有办法在程序本身中提及所需的子图图像大小?

添加颜色条时,通常的做法是为 imshow 返回的图像分配一个变量,例如下面使用的 img = sub2.imshow(z)。然后,您可以通过告诉 plt.colorbar 图像和颜色条的轴(在您的情况下,plt.colorbar(img, ax=sub2)向图像添加颜色条。

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
sub1 = fig.add_subplot(121)
sub2 = fig.add_subplot(122)

x = np.linspace(0,10,200)
y = np.exp(x)
sub1.plot(x,y)

x = np.linspace(-10,10,200)
y = np.linspace(-10,10,200)
xx, yy = np.meshgrid(x,y)
z = np.sin(xx)+np.cos(yy)

img = sub2.imshow(z)
plt.colorbar(img, ax=sub2)

关于更改子图的大小,请参阅 this post