データがなければ、例(休憩など)を再現するのは少し難しいです。しかし、以下はあなたが始めるのに役立つはずです。
かなり簡単な解決策の1つは、ggplot2のannotate()
関数を使用して、垂直線の中間のプロットパネルにテキスト注釈を追加することです。
# Load packages
library (ggplot2)
library(grid)
# Some data
df = data.frame(x = 1:10, y = 1:10)
# Base plot
p <- ggplot(df, aes(x,y)) + geom_point() +
scale_x_continuous(limits = c(0, 11), expand = c(0,0)) +
geom_vline(xintercept = 3) + geom_vline(xintercept = 7)
# Add the annotations
p + annotate("text", x = .5*(0+3), y = 11, label = "Part 1") +
annotate("text", x = .5*(3+7), y = 11, label = "Part 2") +
annotate("text", x = .5*(7+11), y = 11, label = "Part 3")
結果は次のとおりです。

または、注釈に関する限り、プロット例に近いソリューション。annotation_custom()
線を描画し、プロットパネルの外側にテキストを配置するために使用します。注釈はプロットパネルの外側に描画されますが、注釈の配置はデータ座標の観点から行われます。ベースプロットの下マージンは、注釈の余地を与えるために広げられています。このソリューションでは、ggplotによるプロット要素のプロットパネルへのクリッピングをオーバーライドするコードが必要です。
更新 opts
は非推奨です。代わりに使用しtheme
ます。
# Base plot
p <- ggplot(df, aes(x,y)) + geom_point() +
scale_x_continuous(limits = c(0, 11), expand = c(0,0)) +
geom_vline(xintercept = 3) + geom_vline(xintercept = 7) +
theme(plot.margin = unit(c(1,1,4,1), "lines"))
# Create the text Grobs
Text1 = textGrob("Part 1")
Text2 = textGrob("Part 2")
Text3 = textGrob("Part 3")
# Add the annotations
# Segment 1
p1 = p +
annotation_custom(grob = linesGrob(), xmin = 0, xmax = 0, ymin = -1, ymax = -.75) +
annotation_custom(grob = linesGrob(), xmin = 0, xmax = 3, ymin = -1, ymax = -1) +
annotation_custom(grob = linesGrob(), xmin = 3, xmax = 3, ymin = -1, ymax = -.75) +
annotation_custom(grob = Text1, xmin = 0, xmax = 3, ymin = -1.25, ymax = -1.25)
# Segment 2
p1 = p1 +
annotation_custom(grob = linesGrob(), xmin = 3, xmax = 7, ymin = -1, ymax = -1) +
annotation_custom(grob = linesGrob(), xmin = 7, xmax = 7, ymin = -1, ymax = -.75) +
annotation_custom(grob = Text2, xmin = 3, xmax = 7, ymin = -1.25, ymax = -1.25)
# Segment 3
p1 = p1 +
annotation_custom(grob = linesGrob(), xmin = 7, xmax = 11, ymin = -1, ymax = -1) +
annotation_custom(grob = linesGrob(), xmin = 11, xmax = 11, ymin = -1, ymax = -.75) +
annotation_custom(grob = Text3, xmin = 7, xmax = 11, ymin = -1.25, ymax = -1.25)
# Code to override clipping
gt <- ggplot_gtable(ggplot_build(p1))
gt$layout$clip[gt$layout$name=="panel"] <- "off"
grid.draw(gt)
結果は次のとおりです。
