地理坐标上的抖动函数 (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))
我有以下情况:
我有一个数据集,其中每一行代表一个学生。
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))