Python 不是通过密度而是通过第三列的平均值为2d直方图着色

Python 不是通过密度而是通过第三列的平均值为2d直方图着色,python,matplotlib,plot,seaborn,data-science,Python,Matplotlib,Plot,Seaborn,Data Science,我有一个坐标数据集,每行有以下列: x、 y,z(坐标) 精度(测量坐标的精度) 我试图找出是否有比其他区域坐标更差的区域。我实现这一点的方法是使用散点图并使用色调来显示准确性。“精度”值越高,效果越差,因此,图中较暗的点意味着它们的整体精度越差 这从技术上解决了我的问题,但问题是计算需要花费很多时间(因为有超过80万行),我不确定这是实现我想要的最好方法。我在这个数据集中使用了2d直方图,它们工作起来很有魅力,而且速度非常快。问题是它们总是由密度来着色,我想知道是否有可能用箱子的平均精度

我有一个坐标数据集,每行有以下列:

  • x、 y,z(坐标)
  • 精度(测量坐标的精度)
我试图找出是否有比其他区域坐标更差的区域。我实现这一点的方法是使用散点图并使用色调来显示准确性。“精度”值越高,效果越差,因此,图中较暗的点意味着它们的整体精度越差

这从技术上解决了我的问题,但问题是计算需要花费很多时间(因为有超过80万行),我不确定这是实现我想要的最好方法。我在这个数据集中使用了2d直方图,它们工作起来很有魅力,而且速度非常快。问题是它们总是由密度来着色,我想知道是否有可能用箱子的平均精度值来着色直方图


如果有其他的解决方案可以解决这个问题,那么我也会洗耳恭听。我之所以提到这两个,是因为它们是我唯一能想到的。

我已经找到了一种方法,它仍然不完美,但它符合我的需要

其想法是使用pandas手动存储数据:

coordinates['x_bin'] = pd.cut(coordinates['x_coordinate'], bins=30)
coordinates['y_bin'] = pd.cut(coordinates['y_coordinate'], bins=30)
然后,我将这两个人分组,并使用如下热图进行绘图:

grouped = coordinates.groupby(['x_bin', 'y_bin'], as_index=False)['accuracy'].mean()
data = grouped.pivot('y_bin', 'x_bin', 'accuracy')
fig, ax = plt.subplots(figsize=(20,10))
sns.heatmap(data, ax=ax, cmap=sns.cm.mako_r)
ax.invert_yaxis()
结果图如下所示: