데이터 열마다 하나씩 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"을 읽으려고합니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까? 나가 일하기 위하여 얻을 수있는 경우에 이것은 진짜로 차갑고 유용하게 보인다! 어떤 제안을 주셔서 감사합니다.
고마워요, 그게 내가 찾고 있던 바로 그거야! 변수 이름 다음에 쉼표를 붙이는 방법을'3/m^3' 전에 설명해 주시겠습니까? 쉼표를 사용하거나 사용하지 않고 시도했습니다. – wonderoustree
이 양식을 사용하십시오 :'* ","*'... 출력에 (un) 따옴표로 묶인 쉼표 문자를 삽입합니다. 표현 토큰에는 물결표 나 별 또는 수학 기호가 필요합니다. –
답변도 수정되었습니다. –