2017-04-13 7 views
2

ggplot2 플롯에서 범례에 애 브블을 추가하려고합니다. 그러나, 나는 그것을 작동시킬 수 없습니다. 아무도 도와 줄 수 있니?geom_point와 함께 범례에 abline을 추가하는 방법

샘플 코드 :

## dummy script to test legends with ablines 
library(ggplot2) 
df1 <- iris 
plot12345 <- ggplot(data = iris) + 
    geom_point(aes(x = Sepal.Length, y = Sepal.Width, colour = "dummy1")) + 
    geom_abline(aes(colour = "dummy2"), intercept = -3, slope = 1) + 
    scale_colour_manual(values = c("dummy1" = "blue", "dummy2" = "red")) 

이는 전설의 첫 번째 행하지만 두 번째하지 포함되어 우리가 intercept를 넣을 수 있습니다 라인에 대한 범례를 표시하기 위해 enter image description here

+1

하지가 있지만 aes' 당신이 원하는 것을 줄 것이다'안에'intercept'과'slope'을 넣어 어떻게 작동하는지 확인하십시오' geom_point (aes (x = Sepal.Length, y = Sepal.Width, color = "dummy1")) + geom_abline (기울기 = 1, 가로 채기 = -3, 색상 = "dummy2 ")) + scale_colour_manual (값 = c ("dummy1 "="파랑 ","dummy2 "="빨강 ")) ' – mt1022

+0

감사합니다. 별난 일이지만 실제로 작동합니다. 범례에 dummy2의 줄만 표시하고 dummy1의 줄만 표시하는 방법도 알고 있습니까? – rashid

+0

죄송합니다, 어떻게 해야할지 잘 모릅니다. – mt1022

답변

1
  1. aesslope입니다. (나는 어떻게 작동하는지 모르지만 Hadley의 ggplot2 책의 146 페이지에있는 비슷한 예가있다);

  2. 범례에 dummy2의 줄만 표시하고 dummy1의 줄만 표시하려면 guide_legend을 조작하여 기본 범례 미학을 무시해야합니다. linetype = c(0, 1)은 공백과 실선을 의미합니다.

이 최종 코드 :

ggplot(data = iris) + 
    geom_point(aes(x = Sepal.Length, y = Sepal.Width, 
        colour = "dummy1")) + 
    geom_abline(aes(colour = "dummy2", slope = 1, intercept = -3)) + 
    scale_color_manual(
     values = c("dummy1" = "blue", "dummy2" = "red"), 
     guide = guide_legend(
      override.aes = list(pch = c(16, NA), linetype = c(0, 1))) 
    ) 

enter image description here

+0

고맙습니다. 대단합니다. 나는'override.aes' 명령에 대해 몰랐습니다. 훌륭한 스타일의 전설에 위대합니다. 나는 이것을 오랫동안 찾고 있었다. – rashid