地理坐标上的抖动函数(纬度/经度)

问题描述 投票:0回答:2

我有以下情况:

我有一个数据集,其中每一行代表一个学生。

Student_ID School_ID School_Lat  School_Long

  12221      14a      -22.7324    -47.6533

  12344      14a      -22.7324    -47.6533

您可能会注意到,如果学生属于同一所学校,则该学校的geocod将是相同的。

我正在尝试创建抖动效果,以便根据学校ID在地图上代表所有学生。

示例:

我不想在地图上将多个点表示为单个点,而是想在学校周围创建点,以表示属于该学校的学生。

Jitter Effect

可以使用在坐标上创建此最小修改量的熊猫groupby('School_ID')来应用的功能。

python pandas numpy geolocation gis
2个回答
1
投票

由于要绘制结果,因此需要图形库。 Seaborn内部具有抖动功能。

我没有完整的数据集可以尝试,但是我认为您可以通过以下代码实现想要的功能:

   import seaborn as sns
   import matplotlib.pyplot as plt

   sns.stripplot(x=df['School_Lat'], y=df['School_Long'], data=df, jitter=True)
   sns.despine()

enter image description here

我在您的样本数据中又添加了一条记录,以查看其行为。如果您想知道的话,那是个蓝点。


0
投票

在绘图库级别的解决方案是完美的。

但是,如果您想对地图进行手动抖动效果,则不必按School_ID分组。

正常分布的[sigma需要通过实验选择:

sigma = 0.1
df['School_Lat'] = df['School_Lat'].apply(lambda x: x + np.random.normal(x, sigma, 1))
df['School_Long'] = df['School_Long'].apply(lambda x: x + np.random.normal(x, sigma, 1))
© www.soinside.com 2019 - 2024. All rights reserved.