In meinem Verständnis nehmen die Stat-Methoden von ggplot Arrays von Werten und berechnen neue Werte, die durch bestimmte Ästhetik angezeigt werden können. Ich möchte, dass die Größe der Punkte proportional zur Summe einer numerischen Variablen innerhalb jeder Gruppe ist (eindeutige x, y
Kombinationen). Ich war überrascht, dass, wenn es mehr als eine Werte in einer Gruppe gab, mehrere Punkte anstelle von einem Punkt, der die Summe aller Punkte darstellt, gezeichnet wurden. Hier ist ein minimales Arbeitsbeispiel:Wie man ggplot stat_sum der Größenästhetik zuordnet?
ex_data <- data.frame(
a = sort(rep(letters[1:4], 5)),
b = rep(letters[6:7], 10),
c = rnorm(20, 1000, 500),
d = rep(c('h', 'h', 'i', 'i'), 5)
)
p <- ggplot(ex_data,
aes(x = b, y = a, size = log10(c), color = d, shape = d)) +
geom_point(stat = 'sum', alpha = 0.33) +
scale_radius(guide = guide_legend(title = 'c (log)')) +
scale_color_manual(values = c('cyan', 'magenta'),
guide = guide_legend(title = 'd'),
labels = c('h', 'i')) +
scale_shape_manual(values = c(15, 18), guide = FALSE) +
theme_bw()
print(p)
Dank niedrige alpha es sichtbar ist, dass zum Beispiel bei c-f
und a-f
mehr Punkten der gleichen Farbe übereinander aufgetragen. Wie kann ich erreichen, dass für jede Farbe an jeder Stelle ein Punkt vorhanden ist und die Größe dieser Markierungen die Summe aller Werte der Variablen log10(c)
innerhalb dieser Gruppe darstellt?
Wie kann es einen Punkt, wenn Sie zwei Farben zuordnen auf dieser Koordinate? Welche Farbe sollte dieser Punkt haben? Und welche Form? – Axeman
Ich meine einen Punkt für jede Farbe, aber nicht 2 Punkte der gleichen Farbe an der gleichen Stelle – deeenes
Im Allgemeinen finde ich 'stat_summary' nützlich für einfach zusammenfassende Funktionen auf der' y' Ästhetik. Es klingt so, als würde man den Datensatz bis auf einen einzelnen Wert von "c" für jede "a"/"b"/"d" Kombination zusammenfassen. Es ist wahrscheinlich am einfachsten, dies außerhalb von ggplot zu tun, indem Sie das verdichtete Datenset verwenden, um das gewünschte Diagramm zu erstellen. – aosmith