Подграфики Python, содержащие линейный график и тепловые карты

Я хочу нарисовать два подграфика на одном рисунке, один из которых представляет собой простой линейный график y = f(x), а другой — двумерную тепловую карту, как показано здесь.

Но я хочу добавить цветную полосу ко второму графику. Код, который я использую:

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'

Что я могу сделать?

А вывод программы, полученный без ручной настройки параметров подграфика , показан здесь. Два участка имеют очень разные размеры. Есть ли способ указать требуемый размер изображений подзаговора в самой программе?


person kanayamalakar    schedule 08.04.2016    source источник


Ответы (1)


При добавлении цветовых полос общепринятой практикой является назначение переменной изображению, возвращаемому 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)

Что касается изменения размера ваших подграфиков, см. этот пост.

person lanery    schedule 08.04.2016
comment
Есть ли способ сделать цветную полосу тоньше. Потому что я думаю, что это занимает много места. - person kanayamalakar; 09.04.2016
comment
У colorbar есть хорошая группа параметров для настройки размера: фракция, сжатие и аспект. Подробнее см. colorbar.make_axes(). В основном настраивайте эти параметры по мере необходимости, пока не будете удовлетворены. Другие параметры, перечисленные в таблице, предназначены для настройки положения/ориентации. - person lanery; 09.04.2016