2016-08-01 5 views
1

Ich möchte die Größe von Punkten ändern, die mit stat_summary_2d erstellt wurden. Derzeit haben sie alle dieselbe Größe, was nicht aussagekräftig ist. Ich würde normalerweise geom_point() verwenden, aber weil ich möchte, dass die Punkte zentral zu ihren richtigen Bins sind, ist es nicht passend, sie sind in ihrer Platzierung relativ zu den Bin-Zentren inkonsistent, so dass ein Offset auch nicht funktioniert.So erstellen Sie Punkte mit variierender Größe mit stat_summary_2d

Example figure, I'd like to vary the size of the points based on a n_distinct(event_key)

Der Code relevant für die Punkte zu schaffen ist:

stat_summary_2d(data = filter(ni_eff, fishyear %in% c('2013', '2014', '2015', '2016') & coverage), 
        mapping = aes(x = start_long, y = start_lat, z=event_key), 
        binwidth = c(1, 1), 
        geom = 'point', 
        colour = 'red', 
        shape = 1, 
        # size = event_key, 
        fun  = n_distinct) + 

Stat_summary_2d nicht wie Größe in der Ästhetik, und auch event_key nicht erkennt, wenn es eingegeben wird Größe zu bestimmen. Ich denke, dass es möglich sein sollte, aber nicht herausgefunden haben, wie, so würde jede Hilfe geschätzt werden.

Letztendlich möchte ich Punkte zentriert auf 1 * 1 Grad lat-langen Bins, die in der Größe variieren, gegeben eine Spalte event_key innerhalb des Datenrahmens mit ihren Koordinaten.

+0

zu schlecht Ihre 'stat_summary2d' reproduzieren nicht ... irgendwie macht es schwer – Nate

+1

zu helfen http://stackoverflow.com/questions/22011980/map-with-geom-bin2d-overlay -with-additional-stat-info – shayaa

+0

Danke shayaa das ist genau das, was ich war –

Antwort

0

Sie können die Punkte manuell ohne stat_summary2d() hinzufügen und dann position_nudge verwenden, um die Position so einzustellen, dass die Punkte zentriert sind. Zum Beispiel:

df = data.frame(a = 1:10, b = 1:10, c = 1:10) 
d <- ggplot(df, aes(a, b, z = c)) 
d + stat_summary_2d() + 
    geom_point(aes(x = a, y = b, size = c), 
      position = position_nudge(-.1, -.1)) 
+0

Habe diesen Ansatz noch nicht ausprobiert, ich gebe es und –

+0

zurück, weil die Punkte inkonsistent versetzt sind, kann es nicht mit 'position_nudge gelöst werden ' –

1

ähnliche Frage mit einer anwendbaren Antwort:

Map with geom_bin2d overlay with additional stat info

meinen Code anwenden:

point_df <- ggplot(filter(ni_eff, fishyear %in% c('2013', '2014', '2015', '2016') & coverage), 
    aes(x = start_long, y = start_lat)) + 
    stat_summary_2d(aes(z = event_key), binwidth = c(1, 1), fun = length) 
df <- ggplot_build(point_df)$data[[1]] 

Und die Größe variierende Punkte aufgetragen werden unter Verwendung geom_point() und an den richtigen lat-long bin Zentren (x, y) erzeugt von ggplot_build()

geom_point(data = df, aes(x = x, y = y, size = value), 
        colour = "red", shape = 1) 

enter image description here