2013-03-03 3 views
9

Wie kann ich eine einzelne Legende erhalten, die sowohl Farbe als auch Größe erfasst?ggplot2: Eine Legende mit zwei visuellen Eigenschaften, abgeleitet von einer gemeinsamen Variablen

Ich hatte den Eindruck, dass eine gemeinsame Legende Standard ist, wenn eine gemeinsame Variable verwendet wird, aber das folgende Beispiel zeigt, dass mir etwas fehlt.

library(ggplot2) 

input <- as.data.frame(matrix(runif(60),nrow=20,ncol=3)) 
colnames(input) <- c("A","B","C") 

p <- ggplot(input,aes(A,B,size=C,color=C)) + geom_point() 

enter image description here

Dank Arun für einen Kommentar, der diese bearbeiten aufgefordert. Wenn man also nur die Größe verwendet (und die Farbe vergisst), erhält man eine Legende, die drei Größen darstellt, aber viele weitere Größen sind in der Zeichnung dargestellt.

enter image description here

So was würde ich nach sein ist ein ähnliches Verhalten - eine Legende, dass einige Werte der Common Variable zeigt und zeigt die entsprechenden Größen und Farben.

+2

Sie scheinen den ästhetischen 'size' und' color' als kontinuierliches Attribut zu Plotten ('C' ist keine 'factor'). Wie können Sie die Legende kombinieren, wenn sie nicht diskret ist? probiere 'ggplot (Eingabe, aes (A, B)) + geom_point (aes (Größe = Faktor (C), Farbe = Faktor (C))' (Du wirst eine riesige kombinierte Legende sehen) – Arun

+0

Danke @Arun. Größe und Farbe sind beide kontinuierlich. Ich schätze, dass die Größe keine fortlaufende Legendenrepräsentation haben kann, und ich nahm an, dass sie nur die Größe in Intervallen abtasten würde, die verschiedene Größen in der Zeichnung erscheinen lassen könnten, nur die in der Legende. –

+0

@Arun: Immerhin macht es schon Größe: Die Legende zeigt nicht alle Größen, die in der Handlung erscheinen. Ist es nicht sinnvoll, eine Teilmenge der allgemeinen Variable in der Legende erscheinen zu lassen, die mit der entsprechenden Farbe und Größe dargestellt wird? –

Antwort

9

Die colorbar können nicht zusammengeführt werden, sondern eine normale Legende kann,

p + guides(colour = guide_legend()) 
+0

Genau das, was ich brauchte, danke. –

+0

Was ist der einfachste Weg, um mit Ihrer Lösung den Titel der neuen, zusammengesetzten Legende zu ändern? –

+0

Ich fand einen Weg mit scale_size_continuous ("neuer Titel") und scale_colour_continuous ("neuer Titel") vor dem oben genannten, aber ich bin nicht sicher, ob die zwei Zeilen notwendig sind. –

0

I benötigt, um die Etiketten für die Größe zu machen und die gleiche Farbe, und stellen Sie sicher, dass es mit den gleichen Informationen arbeitet mit den Führungen Linie kombiniert .

p+geom_jitter(data=df, aes(x=x, y=y, color=value, size = value)) 
+scale_size_continuous(name = "Legend Name", breaks= c(.25, .50,.75), labels=c(".25",".50",".75"))+scale_colour_gradient(name = "Legend Name", breaks= c(.25, .50,.75), labels=c(".25", ".50",".75"))+ 
guides(colour = guide_legend())