2014-12-08 16 views
8

Próbuję utworzyć wykres liniowy w ggplot2, który łączy różne style linii dla niektórych zmiennych i różnych znaczników dla innych zmiennych.Wykres linii ggplot z różnymi stylami linii i markerami

Przykład 1 przedstawia wykresy dla każdej zmiennej o innym stylu linii, przy czym przykład 2 przedstawia wykresy z innym znacznikiem, a wykresy z przykładu 3 są oznaczone różnymi liniami znaczników AND.

Próbuję wykreślić X2 i X3 z różnymi stylami linii (ciągłe, przerywane), a następnie X4 i X5 jako linie ciągłe z różnymi znacznikami (kółka, kwadrat, cokolwiek).

Czy jest jakiś sposób to zrobić?

library(ggplot2) 
library(reshape2) 

set.seed <- 1 
df <- data.frame(cbind(seq(1,10,1),matrix(rnorm(100,1,20), 10, 4))) 
d <- melt(df, id="X1") 

# Example 1: different line styles 
ggplot(d, aes(x=X1, y=value, color=variable)) + 
    geom_line(aes(linetype=variable), size=1) 

# Example 2: different markers for each line 
ggplot(d, aes(x=X1, y=value, color=variable)) + 
    geom_line() + geom_point(aes(shape=variable, size=4)) 

# Example 3: differnt line styles & different markers (You see this graph below) 
ggplot(d, aes(x=X1, y=value, color=variable)) + 
    geom_line(aes(linetype=variable), size=1) + 
    geom_point(aes(shape=variable, size=4)) 

enter image description here

+0

Jako pierwsze pytanie, to jest dobrze napisane powtarzalny próbki. Dobra robota! :) – jazzurro

Odpowiedz

7

Oto jedno podejście. Możesz użyć dwóch dodatkowych funkcji do sterowania kształtem i typem linii. scale_linetype_manual umożliwia ręczne przypisywanie typów linii. Podobnie, scale_shape_manual pozwala ręcznie przypisać dowolny kształt, który chcesz.

# Example 3: differnt line styles & different markers 
ggplot(d, aes(x=X1, y=value, color=variable)) + 
geom_line(aes(linetype=variable), size=1) + 
geom_point(aes(shape=variable, size=4)) + 
scale_linetype_manual(values = c(1,2,1,1)) + 
scale_shape_manual(values=c(0,1,2,3)) 

enter image description here

+0

Cudownie! Dziękuję bardzo za Twoją pomoc. Oczywiście nadal uczę się wszystkich funkcji ggplot2. – learnmorer

+0

@learnmorer Pleasure. :) Wciąż uczę się codziennie ggplot2! – jazzurro

+1

Myślę, że wystąpił błąd w linii geom_point. Rozmiar powinien znajdować się poza nawiasami: 'geom_point (aes (shape = variable), size = 4)' – luchonacho

Powiązane problemy