2013-03-14 14 views
6

Zrobiłem prosty klasyczny wątek z ggplot2, który jest dwoma wykresami w jednym. Jednak walczę o pokazanie legendy. To nie pokazuje legendy. Nie używałem stopu i nie zmieniłem kształtu, po prostu używam klasycznego sposobu. Poniżej znajduje się mój kod.ggplot2: jak pokazać legendę

df<-read.csv("testDataFrame.csv") 
graph<- ggplot(df,aes(A)) + 

geom_line(aes(y=res1), colour = "1")+ 
geom_point(aes(y=res1),size = 5,shape=12)+ 

geom_line(aes(y=res2), colour = "2")+ 
geom_point(aes(y=res2), size = 5, ,shape=20)+ 

scale_colour_manual(values=c("red","green"))+ 
scale_x_discrete (name="X axis")+ 
scale_y_continuous(name="Y-axis")+ 
ggtitle("Test")+ 
#scale_shape_discrete(name ="results",labels=c("Res1", "Res2"),solid = TRUE) 
print(graph) 

ramka danych jest:

A,res1,res2 
1,11,25 
2,29,40 
3,40,42 
4,50,51 
5,66,61 
6,75,69 
7,85,75 

Wszelkie sugestie, w jaki sposób pokazać legendę na powyższym wykresie?

Odpowiedz

6

W ggplot2, dla każdej estetyki (aes) są wyświetlane legendy; takie jak group, colour, shape. I aby to zrobić, trzeba będzie uzyskać dane w postaci:

A variable value 
1  res1 11 
... ... ... 
6  res1 85 
7  res2 75 

Można to zrobić przy użyciu reshape2melt (jak pokazano poniżej):

require(reshape2) 
require(ggplot2) 

ggplot(dat = melt(df, id.var="A"), aes(x=A, y=value)) + 
     geom_line(aes(colour=variable, group=variable)) + 
     geom_point(aes(colour=variable, shape=variable, group=variable), size=4) 

Na przykład, jeśli nie chcę colour za punkty, a następnie po prostu usuń colour=variable z geom_point(aes(.)). Aby uzyskać więcej opcji legendy, postępuj zgodnie z this link.

enter image description here

+0

dziękuję. Jak zmienić nazwę zmiennej kolorów. Zamiast wyświetlać zmienną dla legendy, mogę zmienić nazwę, na przykład Wyniki. Czy jest sposób? Dzięki kształtowi właśnie usunąłem kolor i użyłem scale_shape_discrete (name = "Results", labels = c ("Res1", "Res1"), solid = TRUE) i to działa. Nie wiesz, jak to zmienić w kolorze? – SimpleNEasy

+0

Bezpośrednim/prostym sposobem jest zapisanie stopionego data.frame do zmiennej takiej jak: 'df.m <- stop (df, id.var =" A ")'. Teraz zmień nazwy kolumn 'df.m' na cokolwiek chcesz. – Arun

+0

Idealny. Dziękuję Ci – SimpleNEasy