同一图上的二元Kdeplot

2024-06-15 17:39:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下散点图:

enter image description here

红点是投篮,蓝点是漏投。我已将未命中的快照分离,并将快照制作成不同的数据帧,然后将它们分散到同一个绘图上。现在,我想使用seaborn创建一个KDEplot,并尝试使用发散的彩色贴图“bwr”(参见here),以获得一个具有最深红色色调和最高浓度红点的绘图,以及具有最高浓度蓝点的最深蓝色色调的绘图,在两者之间的比例最平衡的区域具有白色色调。这是可能做到的吗?如果需要更多信息,请询问。我决心要弄明白这一点

编辑:这是散点图代码,如果相关的话:

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:以下是hexbin图形:

enter image description here


Tags: 数据编辑绘图pltseaborn色调快照loc
1条回答
网友
1楼 · 发布于 2024-06-15 17:39:59

一个真实且经过测试的方法是使散射点变大,并使用阿尔法使其半透明。这应该可以很好地了解红点和蓝点的集中位置

您还可以尝试tricontourf,例如,对于未命中的_快照,z=-1;对于已完成的_快照,z=1

也许是这样的,尽管还不清楚你的数据会是什么样子

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()

另一种可能性是^{},根据上述数据,可按如下方式调用^{}

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

相关问题 更多 >