Python matplotlib контурный сюжет - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть один вопрос о matplotlib и contourf.

Я использую последнюю версию matplotlib с python3.7. В основном я должен матрицу, которую я хочу построить на том же контуре, но используя другую цветовую карту Одним из важных аспектов является то, что, например, если мы имеем нулевую матрицу A и матрицу B с shape = (10,10), то позиции, в которых matrixA отличается от нуля, являются позициями, в которых matrixB отличны от нуля, и наоборот.

Другими словами, я хочу нарисовать разными цветами две разные маски.

Спасибо за ваше время.

Отредактировано:

Я добавляю пример сюда

import numpy
import matplotlib.pyplot as plt

matrixA=numpy.random.randn(10,10).reshape(100,)
matrixB=numpy.random.randn(10,10).reshape(100,)

mask=numpy.random.uniform(10,10)
mask=mask.reshape(100,)

indexA=numpy.where(mask[mask>0.5])[0]
indexB=numpy.where(mask[mask<=0.5])[0]

matrixA_masked=numpy.zeros(100,)
matrixB_masked=numpy.zeros(100,)
matrixA_masked[indexA]=matrixA[indexA]
matrixB_masked[indexB]=matrixB[indexB]

matrixA_masked=matrixA_masked.reshape(100,100)
matrixB_masked=matrixB_masked.reshape(100,100)

x=numpy.linspace(0,10,1)
X,Y = numpy.meshgrid(x,x)
plt.contourf(X,Y,matrixA_masked,colormap='gray')
plt.contourf(X,Y,matrixB_masked,colormap='winter')
plt.show()

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

В других работах каждая часть контурного графика соответствует одной матрице. Я строю решающие поверхности моделей машинного обучения.

1 Ответ

1 голос
/ 30 апреля 2019

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

import numpy
import matplotlib.pyplot as plt

matrixA=numpy.linspace(1,20,100)
matrixA[matrixA >= 10] = numpy.nan
matrixA_2 = numpy.reshape(matrixA,[50,2])

matrixB=numpy.linspace(1,20,100)
matrixB[matrixB <= 10] = numpy.nan
matrixB_2 = numpy.reshape(matrixB,[50,2])

fig,ax = plt.subplots()
a = ax.contourf(matrixA_2,cmap='copper',alpha=0.5,zorder=0)
fig.colorbar(a,ax=ax,orientation='vertical')
b=ax.contourf(matrixB_2,cmap='cool',alpha=0.5,zorder=1)
fig.colorbar(b,ax=ax,orientation='horizontal')
plt.show()

enter image description here

Вы также увидите, что я изменил alpha и zorder

Надеюсь, это поможет.

...