У меня довольно сложная двумерная функция, которую я представляю несколькими уровнями, используя contourf
.Как получить массив, точно соответствующий заполненным контурам?
Например:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1,100)
y = np.linspace(0,1,100)
[X,Y] = np.meshgrid(x,y)
Z = X**2 + Y**2
plt.subplot(1,2,1)
plt.imshow(Z, origin = 'lower')
plt.subplot(1,2,2)
plt.contourf(Z,[0,1,2])
plt.show()
plt.savefig('test.png')
Я бы хотелу меня есть массив из контурной диаграммы, который возвращает постоянные значения между различными контурами.
До сих пор я делал некоторые пороги:
test = Z
test[test<1] = 0
test[test>=1] = 2
plt.contourf(X,Y,test,[0,1,2])
plt.savefig('test1.png')
Но contourf
намного лучше справляется с интерполяцией.Кроме того, пороговое значение «вручную» становится немного длиннее, когда у меня несколько контуров.
Я думаю, потому что contourf
выполняет всю работуесть способ получить это из объекта contourf
?
PS: почему мой первый фрагмент кода создает субплоты разных размеров?