Наложение imshow участков в matplotlib

Я хотел бы сравнить два разных набора данных на одном и том же графике imshow, чтобы было легко увидеть различия. Мой первый инстинкт состоит в том, чтобы сделать цвета в цветовой палитре прозрачными (особенно низкими значениями), но я не смог заставить это работать:

from matplotlib.colors import colorConverter import matplotlib.pyplot as plt import numpy as np # create dummy data zvals = np.random.rand(100,100)*10-5 zvals2 = np.random.rand(100,100)*10-5 # generate the transparent colors color1 = colorConverter.to_rgba('white',alpha=0.0) color2 = colorConverter.to_rgba('black',alpha=0.8) # make the colormaps cmap1 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap',['green','blue'],256) cmap2 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap2',[color1,color2],256) img2 = plt.imshow(zvals,interpolation='nearest',cmap=cmap1,origin='lower') img3 = plt.imshow(zvals2,interpolation='nearest',cmap=cmap2,origin='lower') plt.show() 

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

Любые дополнительные советы о том, как накладывать / сравнивать графики imshow, будут высоко оценены

One Solution collect form web for “Наложение imshow участков в matplotlib”

Вы можете установить alpha аргумент в команде imshow .

В вашем примере img3 = plt.imshow(zvals2, interpolation='nearest', cmap=cmap2, origin='lower', alpha=0.6)

РЕДАКТИРОВАТЬ:

Спасибо за разъяснения. Вот описание того, что вы можете сделать:

  • Сначала выберите объект colplapap matplotlib (в вашем случае, для белого и черного, вы можете взять «двоичную» цветочную карту ). Или создайте свою собственную цветовую карту, как и вы, если цветовая палитра, которую вы хотите, еще не существует.
  • Затем инициализируйте этот объект colormap: это заставит его внутренне создать массив с именем «_lut», который содержит значения rgba.
  • Затем вы можете заполнить альфа-значения в соответствии с тем, что вы хотите достичь (в вашем примере создайте массив от 0 до 0,8)
  • Затем вы можете использовать эту цветовую палитру

Ниже приведен пример использования вашего кода:

 from matplotlib.colors import colorConverter import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl # create dummy data zvals = np.ones((100,100))# np.random.rand(100,100)*10-5 zvals2 = np.random.rand(100,100)*10-5 # generate the colors for your colormap color1 = colorConverter.to_rgba('white') color2 = colorConverter.to_rgba('black') # make the colormaps cmap1 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap',['green','blue'],256) cmap2 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap2',[color1,color2],256) cmap2._init() # create the _lut array, with rgba values # create your alpha array and fill the colormap with them. # here it is progressive, but you can create whathever you want alphas = np.linspace(0, 0.8, cmap2.N+3) cmap2._lut[:,-1] = alphas img2 = plt.imshow(zvals, interpolation='nearest', cmap=cmap1, origin='lower') img3 = plt.imshow(zvals2, interpolation='nearest', cmap=cmap2, origin='lower') plt.show() 

образ

  • Разница между этими формами массива в numpy
  • Python Pandas отбрасывает столбцы на основе максимального значения столбца
  • Невозможно импортировать numpy после установки Anaconda
  • matplotlib.pcolor очень медленный. альтернативы?
  • Как сериализовать функцию sympy lambdified?
  • Форма массива python
  • Получение всех строк со значением NaN
  • Программа Numpy C ++ всегда дает segfault (скорее всего, неправильное использование синтаксиса или типов)
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.