2016-06-10 10 views
-1

Wenn ich den untenstehenden Code ausführen, werden ein Dichtediagramm und ein Histogramm erstellt. Ich habe zwei vertikale Linien hinzugefügt, um Mittelwert und Median zu zeigen. Ich möchte eine Legende ("Mean" mit gepunkteten roten und "Median" mit grüner Farbe) in der oberen rechten Ecke des Diagramms anzeigen. Sie können diesen Code ausführen, da df bereits in R-Studio verfügbar ist.ggplot2 manuelle Legende in einem Plot

Meine Frage ist soll ich theme() oder etwas anderes verwenden, um Legende in meinem Anschlag anzuzeigen?

Antwort

0

Sie sind wahrscheinlich besser dran, wenn Sie ein zusätzliches dat.frame der Zusammenfassungsstatistiken erstellen und dann zum Plot hinzufügen, anstatt zu versuchen, manuell mit der Erstellung von jedes Legendenelement zu experimentieren. Legende Position kann mit theme(legend.position = c())

library("ggplot2") 
library("reshape2") 
library("dplyr") 

# Summary data.frame 
summary_df <- USArrests %>% 
       summarise(Mean = mean(Murder), Median = median(Murder)) %>% 
       melt(variable.name="statistic") 

# Specifying colors and linetypes for the legend since you wanted to map both color and linetype 
# to the same variable. 

summary_cols <- c("Mean" = "red", "Median" = "green") 
summary_linetypes <- c("Mean" = 2, "Median" = 1) 


ggplot(USArrests,aes(x=Murder)) + 
     geom_histogram(aes(y=..density..),binwidth=.5,col="black",fill="white") + 
    geom_density(alpha=.2,fill="coral") + 
    geom_vline(data = summary_df, aes(xintercept = value, color = statistic, 
      lty = statistic)) + 
    scale_color_manual(values = summary_cols) + 
    scale_linetype_manual(values = summary_linetypes) + 
    theme(legend.position = c(0.85,0.85)) 
eingestellt werden

geben

figure_with_legend

0

Keine Notwendigkeit für zusätzliche data.frame s.

library(ggplot2) 

ggplot(USArrests,aes(x=Murder)) + 
    geom_histogram(aes(y=..density..),binwidth=.5,col="black",fill="white") + 
    geom_density(alpha=.2,fill="coral") + 
    geom_vline(aes(xintercept=mean(Murder,na.rm=TRUE), color="mean", linetype="mean"), size=1) + 
    geom_vline(aes(xintercept=median(Murder,na.rm=TRUE), color="median", linetype="median"), size=1) + 
    scale_color_manual(name=NULL, values=c(mean="red", median="green"), drop=FALSE) + 
    scale_linetype_manual(name=NULL, values=c(mean="dashed", median="solid")) + 
    theme(legend.position=c(0.9, 0.9))