使用for loop或lappy从一个数据帧中的选择列创建多个GGPlot
我在尝试创建循环时遇到各种各样的问题,或者使用lapply从一个数据帧生成多个绘图使用for loop或lappy从一个数据帧中的选择列创建多个GGPlot,r,loops,for-loop,ggplot2,lapply,R,Loops,For Loop,Ggplot2,Lapply,我在尝试创建循环时遇到各种各样的问题,或者使用lapply从一个数据帧生成多个绘图 df target A.O2 A.H2O A.conc A.bias B.O2 B.H2O B.conc B.bias C.O2 C.H2O C.conc C.bias 1 85 20.90 0.06 254.96 0.01 20.90 0.06 255.02 0.03 20.90 0.06 254.98 0.01 2 50 20.90 0.09 150.09
df
target A.O2 A.H2O A.conc A.bias B.O2 B.H2O B.conc B.bias C.O2 C.H2O C.conc C.bias
1 85 20.90 0.06 254.96 0.01 20.90 0.06 255.02 0.03 20.90 0.06 254.98 0.01
2 50 20.90 0.09 150.09 0.09 20.90 0.09 150.06 0.08 20.90 0.09 150.00 0.03
3 25 20.94 0.09 75.24 0.31 20.94 0.09 75.47 0.62 20.94 0.09 74.98 -0.04
4 85 10.00 0.08 251.99 -1.22 10.00 0.08 252.02 -1.21 10.00 0.08 252.01 -1.21
5 50 10.00 0.09 148.51 -1.06 10.00 0.09 148.52 -1.05 10.00 0.09 148.50 -1.06
6 25 10.00 0.07 74.00 -1.27 10.00 0.07 74.03 -1.24 10.00 0.07 74.03 -1.24
7 85 0.10 0.06 246.99 -3.13 0.10 0.06 247.01 -3.13 0.10 0.06 247.00 -3.13
8 50 0.10 0.14 146.50 -2.39 0.10 0.14 146.50 -2.39 0.10 0.14 146.45 -2.42
9 25 0.10 0.10 72.97 -2.55 0.10 0.10 73.04 -2.45 0.10 0.10 73.04 -2.44
我想创建X=O2(A.O2,B.O2,C.O2)和Y=bias(A.bias,B.bias,C.bias)的图,并根据目标列中的值对点进行分组
library(ggrepel)
ggplot(df, aes(A.O2, A.bias)) +
theme_bw() +
theme(legend.position = 'bottom', plot.title = element_text(hjust=0.5)) +
geom_point(aes(colour = factor(target))) +
geom_line(aes(colour = factor(target))) +
geom_text_repel(aes(label=paste(A.bias),
hjust= 0.4,
vjust=-.8, colour = factor(target)),
size = 3) +
ggtitle('A') +
labs(
x = expression('O'[2]),
y = "bias",
colour = 'conc'
)
我想重复相同的代码,其中唯一改变的是aes()和ggtitle()中的X和Y值。我曾尝试查找类似的帖子,以便使用for loops或lapply来完成此操作,但似乎没有任何效果。可能会将数据重新格式化为长格式,并使用
facet\u grid
。当我们切换列名的后缀和前缀时,使用重塑
很容易
names(df) <- sapply(lapply(strsplit(names(df), "\\."), rev), paste, collapse=".")
dfl <- reshape(df, varying=2:13, direction="long")
library(ggplot2)
library(ggrepel)
ggplot(dfl, aes(O2, bias)) +
theme_bw() +
theme(legend.position = 'bottom', plot.title = element_text(hjust=0.5)) +
geom_point(aes(colour = factor(target))) +
geom_line(aes(colour = factor(target)))+
geom_text_repel(aes(label=paste(bias),
hjust= 0.4,
vjust=-.8, colour = factor(target)),
size = 3) +
facet_grid("time") +
# ggtitle(z) + ## not needed
labs(
x = expression('O'[2]),
y = "bias",
colour = 'conc'
)
这将在工作目录中保存三个绘图:
dir()
# [1] plotA.png
# [2] plotB.png
# [3] plotC.png
示例图:
数据:
df非常感谢,这太棒了!我有一个问题。对于具有单独绘图的第二个选项,我希望能够调用每个单独的绘图,以便将其与标记一起使用或导出到excel。“我该怎么做呢?”拉比亚的劳伦斯欢迎!尝试一下乐趣吧
!完美的再次感谢你!
dir()
# [1] plotA.png
# [2] plotB.png
# [3] plotC.png
df <- structure(list(target = c(85L, 50L, 25L, 85L, 50L, 25L, 85L,
50L, 25L), A.O2 = c(20.9, 20.9, 20.94, 10, 10, 10, 0.1, 0.1,
0.1), A.H2O = c(0.06, 0.09, 0.09, 0.08, 0.09, 0.07, 0.06, 0.14,
0.1), A.conc = c(254.96, 150.09, 75.24, 251.99, 148.51, 74, 246.99,
146.5, 72.97), A.bias = c(0.01, 0.09, 0.31, -1.22, -1.06, -1.27,
-3.13, -2.39, -2.55), B.O2 = c(20.9, 20.9, 20.94, 10, 10, 10,
0.1, 0.1, 0.1), B.H2O = c(0.06, 0.09, 0.09, 0.08, 0.09, 0.07,
0.06, 0.14, 0.1), B.conc = c(255.02, 150.06, 75.47, 252.02, 148.52,
74.03, 247.01, 146.5, 73.04), B.bias = c(0.03, 0.08, 0.62, -1.21,
-1.05, -1.24, -3.13, -2.39, -2.45), C.O2 = c(20.9, 20.9, 20.94,
10, 10, 10, 0.1, 0.1, 0.1), C.H2O = c(0.06, 0.09, 0.09, 0.08,
0.09, 0.07, 0.06, 0.14, 0.1), C.conc = c(254.98, 150, 74.98,
252.01, 148.5, 74.03, 247, 146.45, 73.04), C.bias = c(0.01, 0.03,
-0.04, -1.21, -1.06, -1.24, -3.13, -2.42, -2.44)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9"))