2016-07-06 6 views
0

Hier die Daten Ich verwende und der Code:ggplot erstellt keine eine Legende, wenn Variablen sind numerisch

str(dfrev_benchmark2) 
'data.frame': 20 obs. of 2 variables: 
$ B_Vec : num 1 51 101 151 201 251 301 351 401 451 ... 
$ revenue: num 31508 1606929 3182350 4757771 6333192 ... 

str(dfaugrev2) 
'data.frame': 20 obs. of 2 variables: 
$ B_Vec : num 1 51 101 151 201 251 301 351 401 451 ... 
$ revenue: num 45451 2317977 4590503 6863029 9135556 ... 

str(dfjanrev2) 
'data.frame': 20 obs. of 2 variables: 
$ B_Vec : num 1 51 101 151 201 251 301 351 401 451 ... 
$ revenue: num 18412 939015 1859618 2780220 3700823 ... 

profitmonthly <- ggplot() + 
geom_line(data=dfjanrev2, aes(x=dfjanrev2[,1], y=dfjanrev2[,2]), 
     color="#000666", size=1.3)+ 
geom_line(data=dfaugrev2, aes(x=dfaugrev2[,1], y=dfaugrev2[,2]), 
     color="#990033", size=1.3)+ 
geom_line(data=dfrev_benchmark2, aes(x=dfrev_benchmark2[,1], y=dfrev_benchmark2[,2]), 
     color="#006633", size=1.3)+ 
scale_y_continuous(labels = scales::dollar)+ 
scale_x_continuous(limits = c(0, 1000))+ 
xlab("Size of the battery")+ 
ylab("Profit") + 
ggtitle("Size of the Battery vs Profit: Monthly Forecast Timespan") + 
theme(plot.title=element_text(size = 15, face="bold"), axis.text=element_text(size=12), 
    axis.title=element_text(size=12,face="bold"))+ 
scale_color_manual(name = "Line Color", 
        labels = c("January"="#000666", "August"="#990033", "Yearly forecast"="#006633")) 


print(profitmonthly) 

Es gibt mir dieses Grundstück:

enter image description here

ich versucht habe, um die Farbe innerhalb der aes zu setzen, aber dann ist das Diagramm leer und es liest die Daten nicht. Also ich denke scale_color_manual ist hier nicht nützlich, da Daten keine Faktoren sind.

Ich muss nur eine einfache Legende erstellen, die die Farben der Linien beschreibt.

Antwort

0

Sie müssen alles in einem einzigen Datenrahmen haben und das Farbargument innerhalb der aes übergeben.

dfjanrev2$month <- "January" 
dfaugrev2$month <- "August" 
dfrev_benchmark2$month <- "Yearly forecast" 
data <- rbind(dfjanrev2, dfaugrev2, dfrev_benchmark2) 

profitmonthly <- ggplot(data) + 
    geom_line(aes(x=B_Vec, y=revenue, color = month), size=1.3)+ 
    scale_y_continuous(labels = scales::dollar)+ 
    scale_x_continuous(limits = c(0, 1000))+ 
    xlab("Size of the battery")+ 
    ylab("Profit") + 
    ggtitle("Size of the Battery vs Profit: Monthly Forecast Timespan") + 
    theme(plot.title=element_text(size = 15, face="bold"), axis.text=element_text(size=12), 
    axis.title=element_text(size=12,face="bold"))+ 
    scale_color_manual(name = "Line Color", 
        values = c("January"="#000666", 
          "August"="#990033", 
          "Yearly forecast"="#006633")) 

edit: geändert labels in values.

+0

Das hat funktioniert, auch "Etiketten" in "Werte" geändert, weil sonst ein Fehler auftritt. Vielen Dank !!! – DariaOs

+0

Richtig, ich habe die Antwort bearbeitet. Es gibt auch andere Möglichkeiten, um eine Legende mit mehreren 'geom_lines' zu erzwingen, aber das wird normalerweise nicht empfohlen. Die zweite Antwort findest du hier: http://stackoverflow.com/questions/10349206/add-legend-to-ggplot2- Linien-Plot – Choubi

Verwandte Themen