Создание цветового графика в логарифмическом масштабе, включая отрицательные значения

У меня есть карта поверхностной плотности в matplotlib, для которой я хочу, чтобы шкала цветовой шкалы была логарифмической.

В идеале использование функции LogNorm должно помочь, но есть отрицательные и нулевые значения, что дает ошибку, когда значения становятся логарифмическими.
Есть ли функция/метод, который я могу использовать для включения областей с отрицательными и нулевыми значениями? в этом отношении?


person firefly    schedule 22.05.2013    source источник
comment
Что вы хотите сделать с отрицательными и нулевыми значениями? Как вы хотите, чтобы они были включены в масштабирование журнала?   -  person BrenBarn    schedule 22.05.2013
comment
И вы можете использовать маскированные массивы, чтобы исключить нулевые и отрицательные значения.   -  person gg349    schedule 22.05.2013
comment
помните, что log(0) == -inf и log(-|x|) == nan   -  person tacaswell    schedule 22.05.2013
comment
@BrenBarn Я не хочу, чтобы значения регистрировались. Только шкала оси должна быть логарифмической, поэтому изменение значений можно увидеть очень четко.   -  person firefly    schedule 23.05.2013
comment
@firefly: значения должны быть зарегистрированы в какой-то момент, чтобы создать логарифмическую шкалу. Если вы просто хотите отобразить их относительные различия, вы можете попробовать масштабировать их все, добавив константу ко всем из них, чтобы сделать наименьшую из них больше нуля.   -  person BrenBarn    schedule 23.05.2013
comment
Основная ветвь matplotlib на GitHub, кажется, включает новый SymLogNorm. Насколько я понял из вашего вопроса, это может удовлетворить ваши потребности.   -  person sodd    schedule 26.05.2013


Ответы (1)


Используйте симметричную логарифмическую нормализацию или SymLogNorm для построения данных как с положительными, так и с отрицательными значениями. Посмотрите эту документацию: Нормализация цветовой карты.

person Sombuddha Bagchi    schedule 27.02.2021