5

I am trying to underline the mean value in the following plot:

dummy <- c(4, 9, 6, 5, 3)
barplot(dummy)
text(4, 8,paste('Average value', mean(dummy)))

I tried using underline() but it says it could not find the function.

text(4, 8,paste('Average value', underline(mean(dummy))))

Error:

could not find function "underline"

I am using : R version 3.1.0

Jaap
  • 81,064
  • 34
  • 182
  • 193
Omley
  • 426
  • 6
  • 17

2 Answers2

13

Like this:

text(4, 8, bquote("Average value"~underline(.(mean(dummy)))))

or if you want the whole text underlined:

text(4, 8, bquote(underline("Average value"~.(mean(dummy)))))

Note use of bquote and .(x) to insert the value of a variable in the expression.

Spacedman
  • 92,590
  • 12
  • 140
  • 224
3

I could not access the link provided by @EddieSanders but I think this link is probably 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)

enter image description here

EDIT:

This will underline just the mean value:

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
  • 12,483
  • 23
  • 78
  • 132
  • I need to underline just the numeric mean value – Omley Jun 02 '14 at 08:25
  • Thank you. As @spacedman has pointed out, there is much more simpler way to do it. – Omley Jun 02 '14 at 09:48
  • @Omley Feel free to compare the result from both approaches and decide which you prefer. I prefer the spacing between the numbers and the line from the code I posted. If that spacing can be adjusted with Spacedman's code I would prefer his approach. – Mark Miller Jun 02 '14 at 09:53