Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Underline Text in a barplot in R

Tags:

plot

r

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

like image 634
Omley Avatar asked Jun 02 '14 05:06

Omley


2 Answers

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.

like image 87
Spacedman Avatar answered Nov 15 '22 04:11

Spacedman


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))))
like image 3
Mark Miller Avatar answered Nov 15 '22 02:11

Mark Miller