Удаление общей цветовой панели в сюжете Xarray - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь подстроить свою подплоту, создав общую цветную полосу с использованием высокоуровневых функций построения графиков Xarrays.В данный момент мой график выглядит как enter image description here, и я хочу создать общую цветную полосу и исправить ось Yaxis таким образом, чтобы только на 1-й подплотке по оси y были метки и метки.Код, который я использовал для построения графика, выглядит следующим образом:

fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True, figsize=(14,10))
Var1_monthly_clim_N.plot(ax=ax1,vmin=6, vmax=14, cmap='jet');

Var2_monthly_clim_S.plot(ax=ax2, vmin=6, vmax=14, cmap='jet', yticks=[]);
## why is yticks removing ticks from both axis
## Var1 and Var 2 have similiar dimensions
Var1
>><xarray.DataArray 'R_metric' (month: 12, lat: 1, lon: 720)>
array([[[ 9.899495,  9.942897, ...,  9.814826,  9.856807]],

   [[ 9.578215,  9.610594, ...,  9.514423,  9.546191]],

   ...,

   [[11.974784, 12.019565, ..., 11.886591, 11.930419]],

   [[10.237672, 10.285891, ..., 10.142638, 10.189836]]])
Coordinates:
* lon      (lon) float32 -180.0 -179.5 -179.0 -178.5 ... 178.5 179.0 179.5
* month    (month) int64 1 2 3 4 5 6 7 8 9 10 11 12
Dimensions without coordinates: lat

Я не самый опытный в построении Python, и я попытался использовать эту идею построения графиков с использованием imshow, чтобы попробовать

img1 = Var1.data
img2 = Var2.data 
plt.subplot(1,2,1)
plt.imshow(img1, vmin=6, vmax=14, cmap='jet', aspect='auto')
plt.subplot(1, 2, 2)
plt.imshow(img2, vmin=6, vmax=14, cmap='jet', aspect='auto')
plt.colorbar()
>>TypeError: Invalid dimensions for image data

Как я могу сделать это быстро, используя высокоуровневые функции построения графиков xarray, то есть не извлекая данные в массивы и создавая сетку и все для графика?

1 Ответ

0 голосов
/ 27 ноября 2018

Я никогда не использовал xarray, поэтому я могу ошибаться, но, при просмотре документации , похоже, что вы могли бы передать add_colorbar=False вам первый plot() вызов для подавления созданияодной из цветовых панелей.

Что касается вашей проблемы с ylabel, вы запросили общую ось Y, поэтому если вы удаляете метки с одной, вы также удаляете их с другой.Интересно, что plt.subplots(..., sharey=True) уже должен был настроить все так, чтобы только у самого левого графа (ов) были y-метки, а они скрыты в других осях.Если xarray 's plot() возиться с этим, то лучше всего удалить sharey=True и убедиться, что ограничения одинаковы вручную (например, с помощью ax2.set_ylim(ax1.get_ylim().)

...