Corner Labels in ggplot2

前端 未结 4 1762
后悔当初
后悔当初 2020-12-29 10:31

I\'m interested in trying to create simple corner labels for a multipanel figure I am preparing in ggplot. This is similar to this previously asked question, but the answers

4条回答
  •  萌比男神i
    2020-12-29 11:15

    I had the same problem and came up with the following solution, which is a bit different:

    loading r packages

    library(ggplot2)
    library(grid)
    library(gridExtra)
    

    example data

    a <- 1:20
    b <- sample(a, 20)
    c <- sample(b, 20)
    d <- sample(c, 20)
    

    create a data frame

    mydata   <- data.frame(a, b, c, d)
    

    create example plots

    myplot1  <- ggplot(mydata, aes(x=a, y=b)) + geom_point()
    myplot2  <- ggplot(mydata, aes(x=b, y=c)) + geom_point()
    myplot3  <- ggplot(mydata, aes(x=c, y=d)) + geom_point()
    myplot4  <- ggplot(mydata, aes(x=d, y=a)) + geom_point()
    

    set corner labels

    myplot1 <- arrangeGrob(myplot1, top = textGrob("A", x = unit(0, "npc")
             , y   = unit(1, "npc"), just=c("left","top"),
             gp=gpar(col="black", fontsize=18, fontfamily="Times Roman")))
    
    myplot2 <- arrangeGrob(myplot2, top = textGrob("B", x = unit(0, "npc")
             , y = unit(1, "npc"), just=c("left","top"),
             gp=gpar(col="black", fontsize=18, fontfamily="Times Roman")))
    
    myplot3 <- arrangeGrob(myplot3, top = textGrob("C", x = unit(0, "npc")
            , y  = unit(1, "npc"), just=c("left","top"),
            gp=gpar(col="black", fontsize=18, fontfamily="Times Roman")))
    
    myplot4 <- arrangeGrob(myplot4, top = textGrob("D", x = unit(0, "npc")
            , y = unit(1, "npc"), just=c("left","top"),
            gp=gpar(col="black",    fontsize=18, fontfamily="Times Roman")))
    

    plotting all plots on one page

    grid.arrange(myplot1, myplot2, myplot3, myplot4, ncol = 2)
    

    corner label

提交回复
热议问题