Labelling of median, upper and lower whiskers in Boxplots

The line geom_text(aes(label=median(marks))) is inheriting the x and y from data, so the calculated median is printed for each (x,y) in the tibble.

One way to handle this is to create a second tibble that provides only those values in the boxplot you want to label. Using the quantile() function, we can create the following:

data_labels = tibble(student = 'level-1',
                     values = quantile(data$marks)
                     )

which produces...

image

Now, replacing this in your ggplot chain and specifying data = data_labels in geom_text(),

ggplot(data,aes(student,marks))+
  geom_boxplot(fill="orange")+
  geom_text(data = data_labels, aes(student, values, label = values))

we end up with...