Матплотлиб - контурный сюжет - PullRequest
0 голосов
/ 04 мая 2018

Я немного борюсь с контурным сюжетом в matplotlib. Я прочитал инструкции и пример, но не могу понять, что мне нужно делать.

У меня есть данные x, y, z. Данные в основном следующие:

x    y    z
1.1  2.1  0
0.9  3.2  1
2.6  4.1  0
3.1  1.1  1
0.3  0.9  1
...

Это длинный список координат x-y, и в каждой точке это 0-1. Вариант использования: шары (1), удары (0), пересекающие зону удара в бейсболе. Когда я строю данные, используя plt.hexbin, вы видите следующее:

strikezone image

Что я хочу сделать, так это построить контур на линии 50%. Как это представить себе ниже:

50% contour plot

Я надеялся использовать контур, но мне неясно, как я могу получить данные - это достаточный формат для рисования контурного графика и использования «уровней» для построения только 50% контура. По-видимому, для функции contour(X,Y,Z) требуются двумерные массивы, поэтому, исходя из имеющихся у меня данных, мне неясно, что именно мне нужно делать.

Есть ли способ, которым я могу поместить данные, которые у меня есть, в функцию, чтобы получить нужный контурный график, как с помощью hexbin?

1 Ответ

0 голосов
/ 04 мая 2018

Сначала вам нужно создать сетку из ваших данных x и y:

X,Y = np.meshgrid(data[:,0], data[:,1])

Затем вы можете интерполировать сетку z:

# Choose one option
# Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='nearest')
 Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='linear')
# Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='cubic')

И нанесите данные, используя контур с указанным уровнем в 0,5:

levels = 0.5
contour(X,Y,Z,levels)

Дайте мне знать, сработал ли этот подход для вас.

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