ggplot2中的角标签

Thr*_*dae 6 label r panel ggplot2

我有兴趣尝试为ggplot中准备的多面板人物创建简单的角标签.这类似于之前提出的问题,但答案仅解释了如何在图表的顶部添加标签,而不是以许多期刊所要求的格式生成角标签.我希望能复制类似的东西plotrix的功能corner.label()ggplot2.

以下是使用plottrix我想要重新创建的内容的示例ggplot2.

require(plotrix)

foo1<-rnorm(50,25,5)
foo2<-rpois(50,25)
foo3<-rbinom(50,25,0.5)
foo4<-rnbinom(50,25,0.5)

par(mfrow=c(2,2))
hist(foo1)
corner.label(label='a',figcorner=T)
hist(foo2)
corner.label(label='b',figcorner=T)
hist(foo3)
corner.label(label='c',figcorner=T)
hist(foo4)
corner.label(label='d',figcorner=T)
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

在此输入图像描述

在此先感谢您的帮助!

Kev*_*Kev 7

我有同样的问题,并提出了以下解决方案,这有点不同:

加载r包

library(ggplot2)
library(grid)
library(gridExtra)
Run Code Online (Sandbox Code Playgroud)

示例数据

a <- 1:20
b <- sample(a, 20)
c <- sample(b, 20)
d <- sample(c, 20)
Run Code Online (Sandbox Code Playgroud)

创建一个数据框

mydata   <- data.frame(a, b, c, d)
Run Code Online (Sandbox Code Playgroud)

创建示例图

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()
Run Code Online (Sandbox Code Playgroud)

设置角标签

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")))
Run Code Online (Sandbox Code Playgroud)

在一页上绘制所有绘图

grid.arrange(myplot1, myplot2, myplot3, myplot4, ncol = 2)
Run Code Online (Sandbox Code Playgroud)

角标签


Mic*_*per 7

最近的两项更改使此操作变得容易得多:

  • 最新版本ggplot2tag标题已添加标题,可用于标记子图。
  • 该软件包patchwork非常容易绘制多个ggplot对象。它目前正在开发中,但是希望它能在CRAN上发布,因为它很棒:https//github.com/thomasp85/patchwork

这意味着不需要更改杂项。改编Kev提供的可复制示例:

library(ggplot2)
# devtools::install_github("thomasp85/patchwork")
library(patchwork)

a <- 1:20
b <- sample(a, 20)
c <- sample(b, 20)
d <- sample(c, 20)
mydata   <- data.frame(a, b, c, d)

myplot1  <- ggplot(mydata, aes(x=a, y=b)) + geom_point() + labs(tag = "A")
myplot2  <- ggplot(mydata, aes(x=b, y=c)) + geom_point() + labs(tag = "B")
myplot3  <- ggplot(mydata, aes(x=c, y=d)) + geom_point() + labs(tag = "C")
myplot4  <- ggplot(mydata, aes(x=d, y=a)) + geom_point() + labs(tag = "D")

myplot1 + myplot2 + myplot3 + myplot4
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


jor*_*ran 6

一个例子:

d <- data.frame(x = runif(16),
                y = runif(16),
                grp = rep(letters[1:4],each = 4))

ggplot(d,aes(x = x,y = y)) + 
facet_wrap(~grp) + 
geom_point() + 
theme(strip.text = element_text(hjust = -0.05),
      strip.background = element_blank())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述