[R] how to get a line plot before/after treatment

Marc Schwartz MSchwartz at medanalytics.com
Wed May 28 20:29:42 CEST 2003

On Wed, 2003-05-28 at 11:48, Frank Mattes wrote:
> Dear R help-list reader,
> I would like to generate a plot which compares to states in a patient 
> treatment, before and after. for this reason I have generated a vector
> before<-c(1,30,23,40)
> and
> after<-c(20,10,20,60)
> the first element in "before" corresponds to the first element in "after".
> I would like and generate a dotplot with
> before and after as x-scale, the elements of "before" and "after" on 
> the y-scale and the corresponding elements connected with a line.
> However, so far I couldn't figure out how to do this in R. If anyone 
> as a suggestion, please let me know
> Many thanks
> Frank

Dr. Mattes,

How about this, using interaction.plot() in package nlme (I am presuming
that each pair of measures is an independent pairing). It takes a bit to
get the data in the proper structure, but the plotting is then easy:

before <- c(1,30,23,40)
after <- c(20,10,20,60)

# Create a new dataframe with columns:
# 'score', 'when' and 'unit'
# 'when' and 'unit' are set to factors

before.new <- data.frame(score = before, when = "Before", 
                         unit = factor(1:4))

after.new <- data.frame(score = after, when = "After", 
                        unit = factor(1:4))

df.new <- rbind(before.new, after.new)

#display df.new to see the structure

# load nlme

#attach the dataframe to call variables directly

#create plot
interaction.plot(when, unit, score, ylab = "Score", xlab = "When", 
                 col = rainbow(4))

# detach df.new to clean up

See ?interaction.plot for more information. This is a simple example of
the function which can handle repeated measures (the default y axis is
the means of scores) and multiple x-axis factors (for example if you had
before, 1 wk after and 2 wks after).


Marc Schwartz

More information about the R-help mailing list