Один участок с тремя цветными полосами внизу - PullRequest
0 голосов
/ 03 октября 2018

Я относительно новичок в Python.Я пытаюсь создать один график из закрашенных контуров из трех цветовых панелей, например: http://www.cpc.ncep.noaa.gov/products/predictions/30day/off15_temp.gif

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

  1. Как вы изменяете цветную полосу, чтобы она была короче одной стороны графика (я смог уменьшить ширину, а не длинуцветовой шкалы. Кроме того, я могу только уменьшить цветную полосу до длины одной стороны графика) ?

  2. Как расположить несколько цветовых полос таким образом, чтобы они появлялись рядом в нижней части графика (Мне еще предстоит увидеть одно решение с несколькими цветными полосами наодна сторона сюжета) ?

Ниже приведена часть моего кода:

import matplotlib.pyplot as plt
import numpy as np

#import data
#lon and lat are arrays representing longitude and latitude respectively
#prob_above, prob_normal and prob_below are arrays representing the probability of above average, normal and below average temperature or precipitation occurring

clevs = np.arange(40,110,10) #percent
cs_above = plt.contourf(lon, lat, prob_above, clevs)
cs_normal = plt.contourf(lon, lat, prob_normal, clevs)
cs_below = plt.contourf(lon, lat, prob_below, clevs)

cbar_above = plt.colorbar(cs_above, location = 'left')
cbar_normal = plt.colorbar(cs_normal, location = 'bottom')
cbar_below = plt.colorbar(cs_below, location = 'right')

1 Ответ

0 голосов
/ 03 октября 2018

Цветные полосы создаются внутри осей.Чтобы иметь полный контроль над тем, где находится цветовая панель, вы можете создать оси в соответствующей позиции и использовать аргумент cax цветовой панели, чтобы указать, какие оси использовать для отображения цветовой полосы.
Чтобы создать полезные оси, GridSpec можетбыть полезным, когда основной график охватывает несколько ячеек сетки, а отношения высот ячеек довольно асимметричны.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

x,y1,y2,y3 = np.random.rand(4,15)

gs = GridSpec(2,3, height_ratios=[15,1])

fig = plt.figure()
# Axes for plot
ax = fig.add_subplot(gs[0,:])
# three colorbar axes
cax1 = fig.add_subplot(gs[1,0])
cax2 = fig.add_subplot(gs[1,1])
cax3 = fig.add_subplot(gs[1,2])

# plot
sc1 = ax.scatter(x, y1, c=y1, cmap="viridis")
sc2 = ax.scatter(x, y2, c=y2, cmap="RdYlGn")
sc3 = ax.scatter(x, y3, c=y3, cmap="copper")

# colorbars
fig.colorbar(sc1, cax=cax1, orientation="horizontal")
fig.colorbar(sc2, cax=cax2, orientation="horizontal")
fig.colorbar(sc3, cax=cax3, orientation="horizontal")

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...