Überlappende Punkte in einem Kreis verteilen - R

Ich habe eine Reihe von Punkten in R, die sich überlappen.> Ich möchte eine neue Koordinatenspalte erstellen, in der ich sie auf einem Kreis verteile.

Ich will nicht zittern; es sieht hässlich aus und ist irreführend -> es lässt den Betrachter glauben, dass die Daten tatsächlich so sind, anstatt dass sie nur zur besseren Sichtbarkeit so präsentiert wurden.

Ich denke, ein Kreis, eine Sonnenblume oder ein Stern sieht gut aus, also ist es das, was ich tun möchte. Was ich habe, funktioniert aufgrund der geografischen Projektionen nicht besonders gut:

Vo

Nac

Beispielkoordinaten

(EINGANG)

Latitude    Longitude
51.52328    -0.1570965
51.52328    -0.1570965
51.52328    -0.1570965
51.52328    -0.1570965
51.52328    -0.1570965

AUSGABE

new_lat new_lng
51.50815    -0.1545583
51.53691    -0.1620067
51.51205    -0.1501359
51.53138    -0.1656516
51.51884    -0.1475074

Mein momentaner Code:

#http://geepeeex.com/LongitudesAndLatitudes.htm
#UK (122/78)
radius_size = 0.001
lat_radius_size = radius_size*(122/78)
many_stations$new_lat <- many_stations$Latitude
many_stations$new_lng <- many_stations$Longitude

for (i in unique(many_stations$Station)) {
# Get group-length = N
group_length = length(which(many_stations$Station == i))
#Cos/Sin take degrees not radians
circle_chunk = (360/group_length)
angle = circle_chunk
# If duplicates:
  if(group_length>1) {
    print(paste('group_length: ',group_length))
    # Loop within the group
    for (j in which(many_stations$Station == i)) {
      print(paste('row: ',j))

      many_stations[j,]$new_lng <- many_stations[j,]$Longitude + sin(angle)*radius_size
      many_stations[j,]$new_lat <- many_stations[j,]$Latitude + cos(angle)*lat_radius_size

      angle = angle + circle_chunk
    }
  }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage