Могу ли я применить симметричные ограничения цвета без указания диапазона в imshow Matplotlib? - PullRequest
0 голосов
/ 27 апреля 2018

Я хотел бы построить разностное изображение с симметричными цветовыми ограничениями без необходимости самостоятельно вычислять цветовые ограничения. То есть моё изображение может иметь интенсивность в диапазоне [-3, 5]. По умолчанию imshow использует эти значения для пределов цвета, а с расходящейся цветовой картой центр белого равен 1. Причина в том, что я мог бы позже изменить изображение и хотел бы избежать пересчета пределов цвета самостоятельно на каждом шаге анимации.

Могу ли я заставить imshow заставить использовать центрированные пределы цвета, в моем примере, [-5, 5], не пропуская [-5, 5] сам?

1 Ответ

0 голосов
/ 27 апреля 2018

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

В этом случае вам необходимо вычислить, какой из ваших пределов является более высоким абсолютным числом, а затем передать его отрицательное значение vmin, а само число - vmax ключевым словам в imshow. Вот минимальный пример

import numpy as np
import matplotlib.pyplot as plt

data = np.zeros((10, 10))
for i in range(10):
    data[i] = np.linspace(-3, 5, 10)

def plot(data):
    limit = max(abs(np.min(data)), abs(np.max(data)) )

    plt.imshow(data, aspect='auto', cmap='RdBu',
              vmin=-limit, vmax=limit)
    plt.colorbar()
    plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...