масштабирование matplotlib.colorbar и matplotlib.contour после создания - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть контурная диаграмма, сгенерированная с помощью matplotlib.

import numpy as np
import matplotlib.pyplot as plt

X = np.linspace(-10, 10, 100)
Y = np.linspace(-10, 10, 100)
XX, YY = np.meshgrid(X, Y)
ZZ = XX**2 + YY**2
levels = np.linspace(0, 200, 10)

fig, ax = plt.subplots()
cf = ax.contourf(X, Y, ZZ, levels=levels)
cbar = fig.colorbar(cf)

Это генерирует эту цифру:

enter image description here

Теперь представьте,что по какой-то причине рисунок передается пользователю посредством вызова некоторых функций, и пользователь получает только объекты ax, fig и cbar.

ОБНОВЛЕНИЕ: причина, по которой я хочусделать это, потому что я должен сделать гигантское количество контурных участков в автоматическом режиме.Я автоматизировал создание контурной диаграммы в бэкэнде (см. Выше см. «Вызов функции»).Но для некоторых сюжетов требуется небольшая модификация для создания изысканных сюжетов.Поэтому вместо того, чтобы манипулировать резервной копией или добавлять множество вариантов для каждой ситуации, было бы неплохо, если бы пара цифр, которые мне нужно отрегулировать из цифр +400, настраивалась с помощью ax, fig иcbar объекты.

Теперь, только манипулируя этими объектами, я хочу увеличить и изменить масштаб как цветовой шкалы, так и уровней.

Увеличение:

ax.set_xlim(2.5, 7.5)
ax.set_ylim(2.5, 7.5)

enter image description here

Изменение предела цветовой шкалы и отметок:

new_clim = (0, 100)
# find location of the new upper limit on the color bar
loc_on_cbar = cbar.norm(new_clim[1])
# redefine limits of the colorbar
cf.colorbar.set_clim(*new_clim)
cf.colorbar.set_ticks(np.linspace(*new_clim, 10))
# redefine the limits of the levels of the contour
cf.set_clim(*new_clim)
# updating the contourplot
cf.changed()

enter image description here

Изменение масштаба самой цветовой панели:

cbar.ax.set_ylim(0, loc_on_cbar)
cbar.ax.autoscale_view()

enter image description here

Теперь здесь есть некоторые проблемы:

  1. IНе могу найти, как найти способ изменения масштаба оси цветовой шкалы без этого раздражающего пустого прямоугольника сверху.
  2. Я не могу найти, как отрегулировать количество уровней в контурной диаграмме и цветовой панели после создания экземпляра.

Большое спасибо!

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