不是按密度而是按第三列的平均值为二维直方图着色
Color a 2d histogram not by density but by the mean of a third column
我有一个坐标数据集,每一行都有以下列:
- x、y、z(坐标)
- 准确度(测量坐标的准确度)
我正在尝试找出是否存在坐标比其他区域更差的区域。我实现这一点的方法是使用散点图并使用色调来显示准确性。精度值越高越差,因此图中的暗点意味着它们的整体精度越差。
这在技术上解决了我的问题,但问题是计算需要很长时间(因为有超过 80 万行)而且我不确定这是实现我想要的效果的最佳方法。我在这个数据集上使用了 2d 直方图,它们非常有用,而且速度非常快。问题是它们总是按密度着色,我想知道是否可以用 bin 的平均准确度值来着色直方图。
如果有其他解决方案可以解决这个问题,那么我也洗耳恭听。我只提到这两个,因为它们是我唯一能想到的。
我找到了一种方法,它仍然不完美,但它符合我的需要。
这个想法实际上是使用 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()
结果图如下所示:
我有一个坐标数据集,每一行都有以下列:
- x、y、z(坐标)
- 准确度(测量坐标的准确度)
我正在尝试找出是否存在坐标比其他区域更差的区域。我实现这一点的方法是使用散点图并使用色调来显示准确性。精度值越高越差,因此图中的暗点意味着它们的整体精度越差。
这在技术上解决了我的问题,但问题是计算需要很长时间(因为有超过 80 万行)而且我不确定这是实现我想要的效果的最佳方法。我在这个数据集上使用了 2d 直方图,它们非常有用,而且速度非常快。问题是它们总是按密度着色,我想知道是否可以用 bin 的平均准确度值来着色直方图。
如果有其他解决方案可以解决这个问题,那么我也洗耳恭听。我只提到这两个,因为它们是我唯一能想到的。
我找到了一种方法,它仍然不完美,但它符合我的需要。
这个想法实际上是使用 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()
结果图如下所示: