2017-12-19 6 views
3

3 개의 열 이름 ("x", "y", " 지").r - 하나의 그래프에 레이블이있는 여러 열을 그려야합니다.

data df

내가 어떻게 라벨

p <- ggplot() + 
    geom_line(aes(time, x), df, colour = "red") + 
    geom_line(aes(time, y), df, colour = "blue") + 
    geom_line(aes(time, z), df,colour = I("darkgreen")) + 
    xlab("Time") + ylab("value") 

Output

+1

, DF %> % 수집 (키, 발, -time) %> % ggplot (AES (X = 0, val = 0, color = key)) + geom_line()' – akrun

+0

이전에 긴 버전을 사용 했었습니다. 코드가 완벽하게 작동합니다 ~! – ys3006

+0

마치 당신처럼, 당신은 와이드 포맷으로 그것을 할 수 있습니다. – akrun

답변

2

이 당신이 원하는 무엇인가를 추가하는 플롯하려면 다음 코드를 사용하지만, 몰라?

library(reshape2) 
df <- melt(df, id.vars = "time") 

> df 
    time variable value 
1  1  x  1 
2  2  x  2 
3  3  x  3 
4  4  x  4 
5  1  y  2 
6  2  y  4 
7  3  y  6 
8  4  y  8 
9  1  z  1 
10 2  z  3 
11 3  z  5 
12 4  z  7 

다음

ggplot(data = df, aes(x = time, y = value, color = variable)) + 
    geom_line() + 
    xlab("Time") + 
    ylab("value") + 
    labs(color = "YOUR LEGEND TITLE") 

전설을 : @akrun 잘하지만

ggplot(data = df) + 
    geom_line(aes(time, x, color = "X")) + 
    geom_line(aes(time, y, color = "Y")) + 
    geom_line(aes(time, z, color = "Z")) + 
    xlab("Time") + 
    ylab("value") + 
    labs(color = "YOUR LEGEND TITLE") 

enter image description here

는 긴 형식으로 데이터를 변환하는 것은 여기에 갈 수있는 방법이 될 것입니다 -title은 선택 사항입니다. btw :

+1

정확하게 ~! 나는'labs() '를 몰라서 모든 색상을 각'geom_lines (..., color = " 레이블 ")'? – ys3006

+0

'labs (color ="... ")'명령은 실제로 필요하지 않으며 색상 범례의 제목 만 변경합니다. 선 종류 또는 모양 등에도 사용할 수 있습니다. 표시 할 레이블은'geom_line (aes (color = ...)) '와 같이 geom_line의'aes' 안에 색상을 넣었습니다. 그래서'geom_line (aes() , color = ...)'당신은 단지 선의 색을 바꾼다. 나는 당신의 질문을 정확하게 이해했으면 좋겠다. – brettljausn

+0

긴 버전이 더 이해가된다 ~ 나를 도와 주셔서 고맙습니다. 이온은 모으는 것보다 쉽습니다. 키와 값을 알아 내야합니다. – ys3006

1

scale_colour_manual을 사용하여 범례를 표시 할 수 있습니다. 같은 수정 된 코드는 모양 : 라이브러리 ', 즉 긴 형식 (tidyverse)로 변환하는 것이 좋습니다

p <- ggplot(df, aes(x,y,z)) + 
    geom_line(aes(time, x, colour = "x")) + 
geom_line(aes(time, y, colour = "y")) + 
geom_line(aes(time, z,colour = "z")) + 
scale_colour_manual("", 
         breaks = c("x", "y", "z"), 
         values = c("red", "blue", "green")) + 
xlab("Time") + ylab("value") 
+1

하하하, 나는 색깔을 자동으로 부여하는 대신 수동으로 색상을 선택하는 방법을 생각하고있었습니다. 당신의 코드를 시험해 보았습니다. 완벽하게 작동합니다 ~ Thx – ys3006

+0

@ ys3006 솔루션이 미리 전달되었습니다. 나는 그것이 당신이 찾고있을 다음 일임을 알았습니다. – MKR

+0

정확하게 필요한 것, 감사합니다 ~ !! – ys3006