我有三个geom_point
图,它们绘制了与ggarrange
一起排列的3个不同变量。最终输出显示图例相互叠加。尝试common_legend = TRUE
时,只会显示第一个的图例。可以安排图例,以便为每个图(右侧)设置三个色标,然后在每个图上的某个位置也有变量名称。
这是一个可重现的示例: 数据集:
Samples <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17)
X = c(1.16,1.16,0.96,0.67,0.78,0.55,0.3,0.26,0.26)
Y = c(75.45,75.45,86.66,103.36,NA,107.53,128.49,128.49)
AA = c(0.003437318,0.005842468,0.005573348,0.006074338,0.002537367,0.006583666,0.006015314,0.010983784,0.009116288,0.010872489,0.010924257,0.009359167,0.009068434,0.00601658,0.017616501,0.014813675,0.018048576)
BB = c(0.007614672,0.007632451,0.007066506,0.007524053,0.008337992,0.012520277,0.012249,0.011351902,0.01263021,0.009969673,0.008850031,0.007290232,0.00724349,0.007161781,0.004299581,0.004896156,0.005970637)
CC = c(0.002133046,0.00168291,0.001580502,0.001491037,0.001295399,0.001644785,0.001738881,0.001496376,0.00140218,0.001247361,0.001364975,0.001209774,0.000933038,0.002034014,0.000665552,0.000855588,0.000878233)
这是用于创建单个数据框并使用三个合并的gig-ggplots进行绘图的代码:
library(ggplot2)
library(ggpubr)
coex1 = data.frame(Samples,X,Y,AA)
coex1 <- data.frame(X,value = c(AA),letters = rep(c("AA"),each = length(AA)))
coex2 = data.frame(Samples,BB)
coex2 <- data.frame(X,value = c(BB),letters = rep(c("BB"),each = length(BB)))
coex3 = data.frame(Samples,CC)
coex3 <- data.frame(X,value = c(CC),letters = rep(c("CC"),each = length(CC)))
p1 <- ggplot(coex1,aes(x=X,y=Y,shape=letters,col=value,col=value))+geom_jitter(width=0.05) + scale_color_gradient(low="blue",high="red")
p2 <- ggplot(coex2,size=value))+geom_jitter(width=0.05) + scale_color_gradient(low="blue",high="red")
p3 <- ggplot(coex3,high="red")
ggarrange(p1,p2,p3,rremove("x.text"),labels = c("a","b","c"),ncol = 1,nrow = 3,legend = "right")