热图可视化智能手机上的触摸输入(加权二维合并、直方图)
Heat map visualizing touch input on smartphone (weighted 2d binning, histogram)
我有一个数据集,其中每个样本都包含智能手机上触摸输入的 x 和 y 位置、时间戳和压力值。我已将数据集上传到此处 (OneDrive):data.csv
阅读者:
import pandas as pd
df = pd.read_csv('data.csv')
现在,我想创建一个热图来可视化 x-y 方向的压力分布 space。
我设想了一个看起来像左图或右图的热图:
对于空间位置的热图,可以使用与给定 here 类似的方法。对于压力值的热图,问题在于存在 3 个维度,即 x 和 y 位置以及压力。
我对关于热图创建的每一个输入都很满意。
可以通过多种方式对数据进行分箱。一个是事件的数量。 numpy.histogram2d or hist2d 等函数允许为每个数据点指定权重以操纵每个事件的权重。
但是有一个更通用的直方图函数可能对您的情况有用:scipy.stats.binned_statistic_2d
通过使用关键字参数 statistic
,您可以选择如何根据以下值计算每个 bin 的值:
- 平均值
- 标准
- 中位数
- 计数
- 总和
- 分钟
- 最大值
- 或用户定义的函数
我想在你的情况下,均值或中位数可能是一个很好的解决方案。
我有一个数据集,其中每个样本都包含智能手机上触摸输入的 x 和 y 位置、时间戳和压力值。我已将数据集上传到此处 (OneDrive):data.csv
阅读者:
import pandas as pd
df = pd.read_csv('data.csv')
现在,我想创建一个热图来可视化 x-y 方向的压力分布 space。
我设想了一个看起来像左图或右图的热图:
对于空间位置的热图,可以使用与给定 here 类似的方法。对于压力值的热图,问题在于存在 3 个维度,即 x 和 y 位置以及压力。
我对关于热图创建的每一个输入都很满意。
可以通过多种方式对数据进行分箱。一个是事件的数量。 numpy.histogram2d or hist2d 等函数允许为每个数据点指定权重以操纵每个事件的权重。
但是有一个更通用的直方图函数可能对您的情况有用:scipy.stats.binned_statistic_2d
通过使用关键字参数 statistic
,您可以选择如何根据以下值计算每个 bin 的值:
- 平均值
- 标准
- 中位数
- 计数
- 总和
- 分钟
- 最大值
- 或用户定义的函数
我想在你的情况下,均值或中位数可能是一个很好的解决方案。