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。
我想在一张图中绘制两个子图,一个是简单的线图 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。