Как добавить две цветные полосы на один и тот же график в pyplot (matplotlib)?

Я хотел бы построить один подзаговор, например:

Title 1
Fig1    Fig2    Fig3 

С общей цветовой полосой для этих 3-х фигур (1,2,3).

Title2
Fig4    Fig5    Fig6

С общей цветовой полосой для этих 3-х фигур (4,5,6).

Я не нашел способа добавить две разные цветовые полосы на одну и ту же фигуру, как описано выше.


person user2050187    schedule 11.07.2013    source источник


Ответы (1)


Это немного сложно, но вы можете разделить наборы подграфиков с помощью общей цветовой полосы.

введите здесь описание изображения

Я использовал несколько предыдущих ответов, которые, возможно, стоит прочитать:

Matplotlib 2 подграфика, 1 цветная полоса

Как я могу создать стандартная цветовая полоса для серии графиков в Python

И, конечно же, документация для matplotlib:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid

# Generate some random data
data_top = np.random.random((3,10,10)) * 5
data_bot = np.random.random((3,20,20)) * 10

fig  = plt.figure()

grid_top = ImageGrid(fig, 211, nrows_ncols = (1, 3),
                     cbar_location = "right",                     
                     cbar_mode="single",
                     cbar_pad=.2) 
grid_bot = ImageGrid(fig, 212, nrows_ncols = (1, 3),
                     cbar_location = "right",                     
                     cbar_mode="single",
                     cbar_pad=.2) 

for n in xrange(3):
    im1 = grid_top[n].imshow(data_top[n], 
                            interpolation='nearest', vmin=0, vmax=5)

    im2 = grid_bot[n].imshow(data_bot[n], cmap=plt.get_cmap('bone'), 
                             interpolation='nearest', vmin=0, vmax=10)


grid_top.cbar_axes[0].colorbar(im1)
grid_bot.cbar_axes[0].colorbar(im2)

plt.show()
person Hooked    schedule 11.07.2013
comment
Спасибо за эту помощь. Это почти работает. Я использую базовую карту для построения ортогональной проекции. Итак, я должен определить m=Basemap(projection='ortho',lon_0=lon_0,lat_0=lat_0,разрешение='l',\llcrnrx=0.,llcrnry=0.,urcrnrx=m1.urcrnrx/2., urcrnry=m1.urcrnry/2.) Затем я вызываю m.pcolor для построения фигур. Но если я попробую im1 =grid_top[n].m.pcolor, это не сработает. Кроме того, как я могу добавить заголовок над каждым рисунком и удалить все числа вокруг графиков? - person user2050187; 17.07.2013
comment
@user2050187 user2050187 Рад, что это немного помогло. StackOverflow работает лучше, если вы разбиваете свои вопросы на отдельные части, на которые мы можем ответить индивидуально. Также помогает, если вы указываете как можно больше информации (например, базовые карты и полярные графики), поскольку это может повлиять на ответ. Удаление номеров и добавление общего заголовка — это вопросы, на которые уже были даны ответы здесь, на этом сайте, например. stackoverflow.com/questions/2176424/, stackoverflow.com/questions/5812169 /. Не забудьте принять ответ на ваши вопросы! - person Hooked; 17.07.2013