Reuben Newton Addison
Reuben Newton Addison

Reputation: 361

Annotate with an arrow in one facet for a ggplot

I want to annotate the black dashed line with an arrow and the text "training". But the annotate function annotates all the facets. I just want the arrow in the "remembered/cen" facet only.

Here's my dataset:

data10 <- structure(list(Group = c("Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Visible", "Visible", "Visible", "Visible", 
"Visible", "Visible", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered", "Remembered", 
"Remembered", "Remembered", "Remembered", "Remembered"), Condition = c("CEN", 
"CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", 
"CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "IPS", "IPS", "IPS", 
"IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", 
"IPS", "IPS", "IPS", "IPS", "CEN", "CEN", "CEN", "CEN", "CEN", 
"CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", 
"CEN", "CEN", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", 
"IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", 
"CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", 
"CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "IPS", "IPS", 
"IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", 
"IPS", "IPS", "IPS", "IPS", "IPS", "CEN", "CEN", "CEN", "CEN", 
"CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", "CEN", 
"CEN", "CEN", "CEN", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", 
"IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", "IPS", 
"IPS"), test = c("Pre-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test", "Pre-test", "Pre-test", "Pre-test", 
"Pre-test", "Pre-test", "Pre-test", "Pre-test", "Pre-test", "Post-test", 
"Post-test", "Post-test", "Post-test", "Post-test", "Post-test", 
"Post-test", "Post-test"), trial = c(1, 2, 3, 4, 5, 6, 7, 8, 
9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), Variables = c("Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Eye movement time", "Eye movement time", "Eye movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time", "Hand movement time", "Hand movement time", 
"Hand movement time"), Eye_Mx = c(1.150583333, 1.273916667, 1.213083333, 
1.065166667, 1.2373, 1.19925, 0.93675, 0.950833333, 0.616916667, 
0.440416667, 0.598083333, 0.618583333, 0.693545455, 0.667583333, 
0.873666667, 0.51825, 1.220454545, 1.034583333, 0.874583333, 
1.015166667, 0.532222222, 0.714454545, 0.905583333, 0.898333333, 
0.641666667, 0.787666667, 0.609833333, 0.623583333, 0.69925, 
0.7188, 0.61725, 0.661166667, 1.349, 1.585416667, 1.0145, 1.201090909, 
0.810545455, 0.591090909, 1.1416, 0.697166667, 0.431166667, 0.804583333, 
0.289666667, 0.63875, 0.46825, 0.633, 0.418833333, 0.691166667, 
1.219125, 0.7033, 0.524666667, 0.724818182, 0.648583333, 0.639181818, 
0.596583333, 0.509416667, 0.576272727, 0.483222222, 0.388222222, 
0.647, 0.42575, 0.269818182, 0.488333333, 0.5903, 1.869083333, 
2.066181818, 2.124166667, 2.31525, 2.0943, 1.93625, 1.786916667, 
1.922583333, 1.470833333, 1.421454545, 1.519083333, 1.508833333, 
1.575909091, 1.5135, 1.8025, 1.541, 1.800454545, 1.888666667, 
1.85575, 2.201666667, 1.55725, 1.7781, 1.748, 1.767583333, 1.489333333, 
1.4259, 1.436916667, 1.5855, 1.535666667, 1.4013, 1.3855, 1.356666667, 
1.852888889, 2.463636364, 2.031, 2.195727273, 1.804454545, 1.709090909, 
2.1938, 1.97625, 1.256833333, 1.704363636, 1.418083333, 1.371166667, 
1.459166667, 1.46725, 1.183666667, 1.407, 2.348625, 1.8981, 1.973583333, 
1.746727273, 1.6805, 1.963, 1.68075, 1.872583333, 1.345636364, 
1.339222222, 1.311222222, 1.316833333, 1.215833333, 1.053636364, 
1.415916667, 1.2292), sd = c(0.948671172, 0.678775831, 0.820965004, 
0.771358286, 1.11350558, 0.598444974, 0.794668727, 0.824723627, 
0.481933503, 0.314103185, 0.469586754, 0.576648697, 0.629203681, 
0.528873667, 0.975212642, 0.406696922, 0.986302019, 0.821480975, 
0.776634401, 0.804389643, 0.52690957, 0.881839936, 0.881676756, 
0.842954149, 0.49820502, 0.551171205, 0.611370269, 0.630794947, 
0.605911653, 0.612136659, 0.504005614, 0.478993231, 0.896792758, 
1.545713396, 1.479810742, 1.481512366, 1.016337185, 0.827241616, 
1.987092303, 0.874371549, 0.557526165, 1.312183015, 0.163762763, 
1.081580084, 0.682258832, 0.99675364, 0.582176455, 1.069035235, 
1.352635886, 1.003522136, 0.705413397, 0.93395362, 0.764277848, 
0.989686599, 0.875251492, 0.582424316, 0.618786084, 0.971365119, 
0.4453251, 1.057255968, 0.710771044, 0.157439397, 0.584064339, 
0.966582301, 0.807429305, 0.578682092, 0.911954428, 1.146678771, 
0.977409848, 0.7173858, 0.692368328, 0.84760684, 0.426626052, 
0.392027133, 0.463031406, 0.346331904, 0.435984278, 0.625301164, 
0.733525794, 0.468399014, 0.911551574, 0.845252338, 0.560227896, 
1.191183013, 0.503701088, 0.686482249, 0.812501692, 0.649220856, 
0.448065201, 0.520082782, 0.465629478, 0.601450142, 0.498518229, 
0.432112652, 0.422273393, 0.374147354, 0.631002663, 1.659917846, 
1.024954525, 1.202822771, 0.652806306, 0.768222032, 1.742846509, 
0.782477781, 0.398411581, 0.98639944, 0.580826286, 0.781519247, 
0.683742619, 0.717473487, 0.26632937, 0.748351886, 1.884740371, 
0.875399141, 0.661320505, 0.703044393, 0.49535084, 0.954243365, 
0.645801986, 1.293963499, 0.649359573, 0.623769945, 0.256283426, 
0.8611224, 0.495113363, 0.158687285, 0.522609442, 0.635988959
), se = c(0.273857778, 0.195945704, 0.236992183, 0.222671957, 
0.352121382, 0.172756183, 0.229401102, 0.238077204, 0.139122219, 
0.090673779, 0.135558019, 0.16646414, 0.189712048, 0.152672677, 
0.281519641, 0.117403289, 0.297381248, 0.237141131, 0.22419504, 
0.232207288, 0.175636523, 0.265884745, 0.254518156, 0.243339902, 
0.143819401, 0.159109422, 0.176487395, 0.182094816, 0.174911628, 
0.193574608, 0.145493889, 0.138273435, 0.298930919, 0.446209023, 
0.467957245, 0.446692786, 0.306437191, 0.249422732, 0.62837376, 
0.252409325, 0.160943941, 0.378794609, 0.047274238, 0.312225276, 
0.19695116, 0.287737991, 0.168059866, 0.30860389, 0.478229004, 
0.317341563, 0.203635307, 0.281597612, 0.220628011, 0.298401737, 
0.252663342, 0.168131418, 0.186571024, 0.323788373, 0.1484417, 
0.305203509, 0.205181927, 0.047469764, 0.168604852, 0.305660162, 
0.233084763, 0.174479216, 0.263258567, 0.331017649, 0.309084133, 
0.207091442, 0.19986952, 0.244683019, 0.123156333, 0.118200628, 
0.133665654, 0.099977409, 0.131454206, 0.180508898, 0.211750657, 
0.135215148, 0.274843141, 0.244003332, 0.161723863, 0.343864917, 
0.178085227, 0.217084748, 0.244978478, 0.187413918, 0.129345282, 
0.164464616, 0.134415652, 0.173623701, 0.143909817, 0.136646019, 
0.121899828, 0.108007038, 0.210334221, 0.500484062, 0.32411908, 
0.362664711, 0.196828507, 0.231627658, 0.551136458, 0.225881879, 
0.115011517, 0.297410621, 0.167670106, 0.225605174, 0.197379493, 
0.207116755, 0.076882667, 0.216030581, 0.666356349, 0.276825515, 
0.190906786, 0.21197586, 0.14299547, 0.2877152, 0.186426975, 
0.373535087, 0.195789278, 0.207923315, 0.085427809, 0.248584625, 
0.142926917, 0.047846017, 0.150864351, 0.201117368), ci = c(0.602756906, 
0.431273588, 0.521616278, 0.490097673, 0.796553907, 0.380233796, 
0.504908421, 0.524004393, 0.306205939, 0.199571642, 0.298361189, 
0.366385102, 0.422704785, 0.336030297, 0.619620551, 0.258402896, 
0.662606712, 0.52194411, 0.493449956, 0.511084796, 0.405018549, 
0.59242813, 0.560190685, 0.535587514, 0.316544368, 0.350197476, 
0.388446137, 0.400787988, 0.384977898, 0.437896186, 0.320229889, 
0.304337779, 0.689335936, 0.982099437, 1.058592834, 0.99529355, 
0.682784611, 0.555748479, 1.421480202, 0.555549178, 0.354235225, 
0.833721312, 0.104049895, 0.6872032, 0.433486581, 0.633307048, 
0.369897272, 0.679232583, 1.1308319, 0.71787649, 0.448198289, 
0.627438579, 0.485598977, 0.664880504, 0.556108267, 0.370054755, 
0.415706148, 0.746657327, 0.342307174, 0.671748394, 0.451602376, 
0.105769226, 0.371096776, 0.691451324, 0.513016105, 0.388763919, 
0.5794282, 0.728564932, 0.699196885, 0.455805192, 0.439909848, 
0.538543693, 0.271065261, 0.263367411, 0.29419612, 0.220048794, 
0.292898224, 0.397297405, 0.466060055, 0.297606535, 0.61238868, 
0.537047714, 0.355951823, 0.756841578, 0.421104648, 0.491079817, 
0.545846064, 0.412495252, 0.284687047, 0.37204481, 0.295846856, 
0.382143188, 0.316743371, 0.30911477, 0.268299713, 0.237721887, 
0.485031584, 1.115147982, 0.733208298, 0.808067333, 0.438561244, 
0.516098584, 1.246757287, 0.497162663, 0.253138642, 0.66267216, 
0.369039416, 0.49655364, 0.434429334, 0.455860905, 0.169217609, 
0.475480104, 1.575682382, 0.626222821, 0.420183003, 0.47231165, 
0.314730908, 0.641069416, 0.410323006, 0.822145184, 0.436245697, 
0.479472024, 0.19699688, 0.54713107, 0.314580023, 0.106607569, 
0.332050198, 0.454959094)), class = c("spec_tbl_df", "tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -128L), spec = structure(list(
    cols = list(Group = structure(list(), class = c("collector_character", 
    "collector")), Condition = structure(list(), class = c("collector_character", 
    "collector")), test = structure(list(), class = c("collector_character", 
    "collector")), trial = structure(list(), class = c("collector_double", 
    "collector")), Variables = structure(list(), class = c("collector_character", 
    "collector")), Eye_Mx = structure(list(), class = c("collector_double", 
    "collector")), sd = structure(list(), class = c("collector_double", 
    "collector")), se = structure(list(), class = c("collector_double", 
    "collector")), ci = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1), class = "col_spec"))

And here's my ggplot codes:

p <- ggplot(data10, aes(x = trial, y = Eye_Mx)) + 
   geom_line(aes(color = Variables, linetype = Variables), lwd=1.2) + 
   scale_color_manual(values = c("darkred", "steelblue")) + facet_grid(Condition ~ Group)+ theme_bw() + xlab("Trial Pre- / Post-test") + ylab("Hand and Eye Movement time (s)") +
   scale_x_continuous(limits = c(1,16), breaks = seq(1,16,1)) + theme(axis.text.x = element_text(size = 10,face="bold", angle = 90),#, angle = 10, hjust = .5, vjust = .5),
                                                                      axis.text.y = element_text(size = 10, face = "bold"),
                                                                      axis.title.y = element_text(vjust= 1.8, size = 16),
                                                                      axis.title.x = element_text(vjust= -0.5, size = 16),
                                                                      axis.title = element_text(face = "bold")) +  theme(legend.position="top")+
   geom_vline(xintercept=8.5, linetype="dashed", color = "black", size=1.5) 
 
 p + guides(fill=guide_legend(title="Variables:")) + theme(legend.text=element_text(size=14),legend.title=element_text(size=14) ) +
   theme(strip.text = element_text(face="bold", size=12)) + annotate("segment", x = 11, xend = 9, y = 4, yend = 3, colour = "black", size=1, alpha=0.9, arrow=arrow())

Upvotes: 1

Views: 638

Answers (1)

benson23
benson23

Reputation: 19107

You can create an additional dataframe (e.g. arrowdf) which includes the Condition and Group that you would like to annotate. I also grouped all of your theme() arguments so that they are more clear.

arrowdf <- tibble(Condition = "CEN", Group = "Remembered")

ggplot(data10, aes(x = trial, y = Eye_Mx)) + 
  geom_line(aes(color = Variables, linetype = Variables), lwd=1.2) + 
  scale_color_manual(values = c("darkred", "steelblue")) + 
  facet_grid(Condition ~ Group)+ 
  theme_bw() + 
  xlab("Trial Pre- / Post-test") + 
  ylab("Hand and Eye Movement time (s)") +
  scale_x_continuous(limits = c(1,16), breaks = seq(1,16,1)) + 
  theme(axis.text.x = element_text(size = 10,face="bold", angle = 90),
        axis.text.y = element_text(size = 10, face = "bold"),
        axis.title.y = element_text(vjust= 1.8, size = 16),
        axis.title.x = element_text(vjust= -0.5, size = 16),
        axis.title = element_text(face = "bold"),
        legend.text=element_text(size=14),
        legend.title=element_text(size=14),
        strip.text = element_text(face="bold", size=12),
        legend.position="top")+
  geom_vline(xintercept=8.5, linetype="dashed", color = "black", size=1.5) + 
  guides(fill=guide_legend(title="Variables:")) + 
  geom_segment(data = arrowdf, 
               aes(x = 11, xend = 9, y = 4, yend = 3), 
               colour = "black", size = 1, alpha=0.9, arrow = arrow())

arrow in one facet

Upvotes: 2

Related Questions