地理坐标上的抖动函数 (Latitude/longitudes)

Jitter function on Geographic coordinates (Latitude/longitudes)

我有以下情况:

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

Student_ID School_ID School_Lat  School_Long

  12221      14a      -22.7324    -47.6533

  12344      14a      -22.7324    -47.6533

你可以注意到,如果学生属于同一所学校,学校的geocod将是相同的。

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

示例:

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

可以使用 pandas groupby('School_ID') 应用的函数,对坐标进行最小修改。

既然要绘制结果,就需要图库。 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()

我在您的示例数据中又添加了一条记录,只是想看看它会如何表现。如果您想知道的话,那就是蓝点。

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

但如果你想为地图做手动抖动效果,你不必按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))