I was unable to access the link provided by @EddieSanders, but I think this link probably refers to the same solution: http://tolstoy.newcastle.edu.au/R/help/02a/0471.html
underlined <- function(x, y, label, ...){ text(x, y, label, ...) sw <- strwidth(label) sh <- strheight(label) lines(x + c(-sw/2, sw/2), rep(y - 1.5*sh/2, 2)) } dummy <- c(4, 9, 6, 5, 3) barplot(dummy) text(4, 8, underlined(4,8,paste('Average value', mean(dummy))), font=2)

EDIT:
This will only mean the average:
underlined <- function(x, y, label, ...){ text(x, y, label, ...) sw <- strwidth(label) sh <- strheight(label) lines(x + c(-sw/2, sw/2), rep(y - 1.5*sh/2, 2)) } dummy <- c(4, 9, 6, 5, 3) barplot(dummy) text(4, 8, paste('Average value', underlined(4.9,8,mean(dummy))))
Mark miller
source share