2016-10-17 4 views
2

현재 특정 플롯을 만들기위한 기능을 작성 중입니다. 플롯은 그룹 별 상대 평균 편차 (각각의 효과 크기)를 그랜드 샘플 평균과 비교하고 그룹당 전체 평균 편차를 수평선으로 표시합니다. 나는 이미 플롯에서 그룹의 다른 색상을 얻는 방법을 찾았지만 그룹의 특정 색상으로 그 라인을 채색 할 수는 없습니다. 그때 컷오프 라인을위한 데이터 프레임을 생성컷오프 라인에 요인 별 색상 추가 R

require(reshape2) 
df_aux <- data.frame(matrix(unlist(dev_list), nrow=length(dev_list), byrow=T), class = c(names(dev_list))) 
colnames(df_aux) <- c(c(paste0("v", 1:10)), "class") 
df_melt <- melt(df_aux) 

:

이어서
ml_list <- mapply(function(A, B) { 
    list(data.frame(x = c(-Inf, Inf), y = mean(A), cutoff = factor(paste(B, "Mean Deviation", sep = " ")))) 
}, dev_list, c(names(dev_list))) 

I 플롯

a <- c(runif(10)) 
names(a) <- c(paste0("v", 1:10)) 
b <- c(runif(10)) 
names(b) <- c(paste0("v", 1:10)) 
c <- c(runif(10)) 
names(c) <- c(paste0("v", 1:10)) 

dev_list <- list(a,b,c) 
names(dev_list) <- c("group1", "group2", "group3") 

먼저 I 데이터를 용융 : 여기

일부 예시적인 데이터의 데이터 :

require(ggplot2) 
p <- ggplot(df_melt, aes(variable, value)) + geom_point(aes(colour = class)) 

지금까지 선을 삽입 할 때 선의 색상을 정의하기 위해 클래스 변수를 다시 참조하는 방법을 모르겠습니다. 지금까지 내 코드 :

Link to the plot as apparently I cannot include it in the post yet

내가 이미 geom_line의 AES 내부 같은 colour = class을 퍼팅 시도했지만, 그것을하지 않았다 :

p <- p + lapply(ml_list, function(z) {geom_line(aes(x,y, linetype = cutoff), z)}) 

이후 줄거리 p은 다음과 같습니다 작업. 나는 또한 How to assign colors to categorical variables in ggplot2 that have stable mapping?에서 설명 된 몇 가지 기술을 사용하려고 시도했으나 작동하지 못했습니다.

내 마지막 줄의 코드가 줄거리와 같은 방식으로 클래스 변수의 색을 사용하도록 올바른 색 지정을 도와 줄 수 있습니까?

미리 감사드립니다.

편집 : 다른 사람이 필요로하는 경우 : Brandons 솔루션이 작동하려면 위의 ml_list에 색상 정의 변수를 포함해야합니다.

새로운 코드 라인 :

ml_list <- mapply(function(A, B) { 
    list(data.frame(x = c(-Inf, Inf), y = mean(A), cutoff = factor(paste(B, "Mean Deviation", sep = " ")), class = factor(paste0(B)))) 
    }, dev_list, c(names(dev_list))) 

답변

1

나는 트릭이 data.frame으로 일을 계속하는 것입니다 생각합니다. 개별적으로 레이어를 추가하면 각 *

ml_list <- unique(do.call(rbind, ml_list)[-1]) 

p <- ggplot(df_melt, aes(variable, value)) + geom_point(aes(colour = class)) 
p + geom_hline(aes(yintercept=y, linetype = cutoff, color = cutoff), ml_list) + 
    scale_color_discrete(breaks = df_melt$class) 

scale_color_discrete()을 설정하면이 도표에 필요한 제 생각으로 프리젠 테이션을 강제 적용에 당신은 또한 색상을 설정해야 할 것 같은 약간의 고통이다.

+0

이것은 완벽하게 작동합니다! 고마워! – LAP

+0

문제가 해결되지 않았다는 것을 알았으므로 다시 열어야합니다. 선의 색상이 해당 점의 색상에 맞지 않습니다. – LAP

+0

여러분의'scale_color_discrete (value = c ("my", "list", "of", "colors"))에 색상 추가하기' –