我有以下情况:
我有一个数据集,其中每一行代表一个学生。
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')应用的函数,它在坐标上创建最小的修改。
发布于 2019-10-20 22:33:57
绘制库级的解决方案是完美的。
但是,如果你想手动为地图做抖动效果,你不需要按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))发布于 2019-10-20 22:15:20
由于您希望绘制结果,因此需要图形库。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()

我在您的样本数据中又添加了一条记录,只是为了看看它的行为。这就是蓝点,如果你想知道的话。
https://stackoverflow.com/questions/58473623
复制相似问题