Matplotlib Colorbar Scaling - PullRequest
       15

Matplotlib Colorbar Scaling

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

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

Это то, что я имею до сих пор:

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1,1,1000)
x,y = np.meshgrid(x,x)

z = np.exp(-(x**2+y**2))
plt.contourf(x,y,z,100,vmax=.75*np.max(z))
plt.colorbar()
plt.show()

Что я могу сделать для

  1. Отрезать цветную полосу
  2. Укажите тот факт, что он обрезан, перекрывая цветную полосу стрелкой вместо обычной формы прямоугольника

1 Ответ

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

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

Вы, конечно, можете устанавливать уровни так, чтобы последний уровень содержал «остальную часть диапазона».Тогда вы можете использовать ключевое слово extend для contourf.

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1,1,1000)
x,y = np.meshgrid(x,x)

z = np.exp(-(x**2+y**2))

levels = np.linspace(z.min(),0.75*z.max(),100)
levels[-1] = z.max()
plt.contourf(x,y,z,levels, extend="both", vmax=0.75*z.max())
plt.colorbar()
plt.show()

enter image description here

В этом случае представляется более разумным способ построения графикаданные (которые в любом случае достаточно плотны) должны использовать график pcolormesh.

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1,1,1000)
x,y = np.meshgrid(x,x)

z = np.exp(-(x**2+y**2))

plt.pcolormesh(x,y,z, vmax=0.75*z.max())
plt.colorbar(extend="both")
plt.show()

enter image description here

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