2013-11-23 3 views
1

데이터 열마다 하나씩 ggplot2에서 일련의 플롯을 만들고 있는데 Y 축 레이블이 플롯 된 변수의 이름과 동적으로 변경되도록 코드를 작성하고 싶습니다. 라벨에있는 정보). dput()에서ggplot2에서 ylab()를 사용하여 동적 축 레이블을 만드는 방법은 무엇입니까?

내 데이터 : (

library(ggplot2) 
df$day<-factor(df$day, levels = c("5-Aug","10-Aug","17-Aug")) #corrects day order 

allplots <- ggplot(data=df, aes(x=station, y=Mean)) + 
    geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), colour="black", width=0.1)+ 
    geom_point(size=2) + 
    xlab(NULL) + 
    ylab(expression(paste('Copepods,'~'#/m'^3))) + 
    theme_bw() + 
    theme(
    panel.grid.major = element_blank(), 
    panel.grid.minor = element_blank() 
    ) + 
    scale_x_continuous(expand=c(.3,0), breaks=c(1:3), labels=c("In", "FL", "Off")) + 
    annotation_logticks(sides = "l") + 
    scale_y_log10() + 
    theme(axis.text.x=element_text(size=12)) + 
    theme(axis.text.y=element_text(size=12)) + 
    facet_grid(Bug ~ day) 

plotfun <- function(x,y) { 
    a <- ggplot(data=x, aes(x=station, y=Mean)) + 
     geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), colour="black", width=0.1)+ 
     geom_point(size=2) + 
     xlab(NULL) + 
     ylab(expression(paste('Copepods,'~'#/m'^3))) + #I'd like Copepods to change with variable that is being plotted 
     theme_bw() + 
     theme(
     panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank() 
     ) + 
     scale_x_continuous(expand=c(.3,0), breaks=c(1:3), labels=c("In", "FL", "Off")) + 
     annotation_logticks(sides = "l") + 
     scale_y_log10() +   
     theme(axis.text.x=element_text(size=12)) + 
     theme(axis.text.y=element_text(size=12)) +    
     facet_grid(.~day) 
pdf(file=paste(y,'pdf',sep=".")) 
print(a) 
dev.off() 
    } 

mapply(plotfun, split(df, df$Bug), levels(df$Bug)) 

나는 ylab 내 paste(levels(df$Bug))를 사용하여 시도 : 나는 자동으로 새 동적라는 .PDF를 생성하고 저장하려면 다음 코드를 사용하고

df <- structure(list(day = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L), .Label = c("5-Aug", "10-Aug", "17-Aug"), class = "factor"), 
station = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L 
), Bug = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L), .Label = c("Copepod", "Copepod nauplii", "Harpactioid copepods" 
), class = "factor"), Mean = c(382.4048896, 1017.171389, 
1519.141298, 233.3753491, 167.1086422, 530.7227507, 20.55943305, 
482.9992303, 10.49548997, 698.0193699, 5398.533995, 2458.635058, 
36.90431458, 124.4956045, 20.8459728, 8.414735929, 4014.649407, 
7.279486288, 346.1246378, 5722.82018, 6253.357325, 427.6856315, 
1768.984975, 1486.635443, 4.825526305, 46.50462845, 1.07692853 
), StErr = c(83.18963396, 100.9187504, 73.45417607, 88.08491141, 
44.57580452, 44.03459391, 4.663586058, 112.4238952, 2.551982788, 
284.3933876, 3417.741042, 689.5558519, 9.798626545, 49.16103906, 
4.268815029, 3.76465482, 1803.977156, 1.328408258, 53.67873047, 
1796.827256, 732.573507, 86.56594682, 198.7842421, 229.0132055, 
1.129940095, 16.48065742, 0.283417726)), .Names = c("day", 
"station", "Bug", "Mean", "StErr"), row.names = c(NA, -27L), class = "data.frame") 

) 그러나 그것을 작동시키지 못했습니다. 나는 그 밖의 무엇을 시도해야할지 모르며 누군가가 내가 조사 할 수있는 것을 제안 할 수 있기를 희망했다. 각 Y 축은 Bug (즉, Copepod, Copepod nauplii 및 Harpacticoid copepods) 수준에서 가져온 VariableName을 사용하여 ", m^3"을 읽으려고합니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까? 나가 일하기 위하여 얻을 수있는 경우에 이것은 진짜로 차갑고 유용하게 보인다! 어떤 제안을 주셔서 감사합니다.

답변

2

나는 플롯의 ylab 라벨에 도움을 줄 수 있다고 생각하는데, 이는 귀하의 질문의 핵심 인 것 같습니다. 이것은 3 개의 플롯을 생성하지만 여러가지 ggplot 에러가 발생했습니다. (잘 이해하지 못합니다) 이것은 테마와 스케일과 관련된 많은 코드를 필요로합니다. 나중에 ggplot 기계를 행복하게 만드는 다른 주문으로 다시 넣었습니다. 주위 항목을 이동 (오류 메시지에 의해 구동되는 방식으로 나는 연속적으로있어) 하나 + 내가 실행하려면이 버전을 얻을 수 있었다 서명을 추가함으로써

plotfun <- function(x,y) { 
    a <- ggplot(data=x, aes(x=station, y=Mean)) + 
     geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), 
         colour="black", width=0.1)+ 
     geom_point(size=2) + 
     xlab(NULL) + 
     ylab( bquote(.(y)~"#"/m^3))+ 
     scale_y_log10()+ 
     theme_bw() 
pdf(file=paste(y,'pdf',sep=".")) 
print(a) 
dev.off() 
    } 

mapply(plotfun, x=split(df, df$Bug), y=levels(df$Bug)) 

:

plotfun <- function(x,y) { 
    a <- ggplot(data=x, aes(x=station, y=Mean)) + 
     geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), colour="black", width=0.1)+ 
     geom_point(size=2) + 
     xlab(NULL) + 
     ylab(bquote(.(y)*","*~"#"/m^3))+ 
     scale_y_log10() + annotation_logticks(sides = "l") + 
     theme_bw() + 
     theme( panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank() ) + facet_grid(.~day) 
pdf(file=paste(y,'pdf',sep=".")) 
print(a) 
dev.off() 
    } 

mapply(plotfun, x=split(df, df$Bug), y=levels(df$Bug)) 

난 그냥거야 한 페이지를 게시 :

allplots <- ggplot(data=df, aes(x=station, y=Mean)) + 
    geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), colour="black", width=0.1)+ 
    geom_point(size=2) + 
    facet_grid(Bug ~ day) + 
    xlab(NULL) + 
    ylab(expression(Copepods *","* ~'#'/m^3)) +scale_x_continuous(expand=c(.3,0), breaks=c(1:3), labels=c("In", "FL", "Off")) +annotation_logticks(sides = "l") + scale_y_log10() + 
    theme_bw() + 
    theme( panel.grid.major = element_blank(), 
    panel.grid.minor = element_blank() ) + 
    theme(axis.text.x=element_text(size=12)) + 
    theme(axis.text.y=element_text(size=12)) 
print(allplots) 
: enter image description here

또한 나는 allplots 버전에 geting 된 오류를 수정

+0

고마워요, 그게 내가 찾고 있던 바로 그거야! 변수 이름 다음에 쉼표를 붙이는 방법을'3/m^3' 전에 설명해 주시겠습니까? 쉼표를 사용하거나 사용하지 않고 시도했습니다. – wonderoustree

+1

이 양식을 사용하십시오 :'* ","*'... 출력에 (un) 따옴표로 묶인 쉼표 문자를 삽입합니다. 표현 토큰에는 물결표 나 별 또는 수학 기호가 필요합니다. –

+0

답변도 수정되었습니다. –

관련 문제