Двойной двумерный Kdeplot на том же графике - PullRequest
0 голосов
/ 17 марта 2020

У меня есть следующая диаграмма рассеяния:

enter image description here

Красные точки - это снимки, синие - пропущенные. Я разделил пропущенные снимки и сделал снимки на разные кадры данных и разбросал их по одному графику. Теперь я хотел бы создать KDEplot с использованием seaborn и попытаться использовать расходящуюся цветовую карту 'bwr' (см. здесь ), чтобы получить график с самыми глубокими красными оттенками с наибольшей концентрацией красных точек, и глубокие синие оттенки в наибольшей концентрации синих точек, с белым оттенком в зонах, где соотношение между ними наиболее сбалансировано. Это то, что можно сделать? Если нужна дополнительная информация, просто спросите. Я полон решимости выяснить это.

Редактировать: Вот код диаграммы рассеяния, если он вообще уместен:

plt.scatter(made_shots.LOC_X, made_shots.LOC_Y, s=5, c='r')
plt.scatter(missed_shots.LOC_X, missed_shots.LOC_Y, s=5, c='b')

Редактировать 2: Вот график гексбина:

enter image description here

1 Ответ

2 голосов
/ 18 марта 2020

Истинный и проверенный подход заключается в увеличении разбросанных точек и использовании альфа-канала, чтобы сделать их полупрозрачными. Это должно дать хорошее представление о том, где сосредоточены красные и синие точки.

Вы также можете попробовать tricontourf , например, с z = -1 для missed_shots и z = 1 для made_shots ,

Может быть, что-то вроде этого, хотя очень непонятно, как это будет выглядеть с вашими данными.

import matplotlib.pyplot as plt
import numpy as np

shots_x = np.concatenate([made_shots.LOC_X, missed.shots_LOC_X])
shots_y = np.concatenate([made_shots.LOC_Y, missed.shots_LOC_Y])
shots_z = np.concatenate([np.repeat(1, len(made_shots)), np.repeat(-1, len(missed_shots))])

plt.tricontourf(shots_x, shots_y, shots_z, cmap='coolwarm')

plt.show()

Другая возможность может быть hexbin, которая будет вызывается следующим образом с указанными выше данными:

plt.hexbin(shots_x, shots_y, C=shots_z, cmap='coolwarm', gridsize=30)
...