Как получить массив, соответствующий точности для contourf? - PullRequest
0 голосов
/ 01 февраля 2019

У меня довольно сложная двумерная функция, которую я представляю несколькими уровнями, используя 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')

enter image description here

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

До сих пор я делал некоторые пороги:

test = Z
test[test<1] = 0
test[test>=1] = 2
plt.contourf(X,Y,test,[0,1,2])
plt.savefig('test1.png')

Но contourf намного лучше справляется с интерполяцией.Кроме того, пороговое значение «вручную» становится немного длиннее, когда у меня несколько контуров.

enter image description here

Я думаю, потому что contourf выполняет всю работуесть способ получить это из объекта contourf?

PS: почему мой первый фрагмент кода создает субплоты разных размеров?

...