Dear List,

I am sorry if this perhaps a too basic question, but I have not found an
answer in Google or in the R help system. I am trying to use R to do a
very simple analysis of some data (RT-PCR and Western analysis) with a
T-test and
to plot the results as a histogram with error bars. (I have pasted an
example script at the bottom of this mail).
In order to use this for publication, I would like to adjust the
resolution and size of the final image. However, even using file types
such as postscript or pdf that are vector based, I get rather bad-looking
results with
>pdf(file="test.pdf")
>source("script at bottom of mail")
>dev.off()

using either pdf or postscript or jpg devices.


Therefore I would like to ask the list, how to best produce a graphic from
the script below that would fit into one column of a published article and
have a high resolution (as eps, or failing that tiff or png)?
Thanks in advance for any advice,

Peter




## Western.R
## A script to display the results of quantitative Western blotting with 6
repeats each at three dosages.
## This particular script has data from stimulation of fibroblasts with M-wt.


# ----------   CONVENIENCE FUNCTIONS --------------------- #
## Define a simple function to draw the error bars.
makeBars <- function(x,mean,se){
        segments(x,mean - se/2,x,mean+se/2)
        segments(x-0.1,mean - se/2,x+0.1,mean - se/2)
        segments(x-0.1,mean + se/2,x+0.1,mean + se/2)
        }
##Define a simple function to write p values
writeP <- function(x,mean,se,pval) {
        if (pval >= 0.01) {
                # text(x, mean + se/2 + 0.25, sprintf('p=%.2f',pval),cex=1.5)
                text(x +0.05, mean + se/2 + 0.4, sprintf('*'),cex=1)
        } else {
                text(x +0.05, mean + se/2 + 0.4, sprintf('**'),cex=1)
                }
        }


## define function to draw entire group
## A,B,C refer to the x positions of the x,y,z observations
drawBarsAndPValueForGroup <-
function(A,B,C,x.mean,x.se,y.mean,y.se,z.mean,z.se,xy.pval,xz.pval) {
        makeBars(A,x.mean,x.se)
        makeBars(B,y.mean,y.se)
        makeBars(C,z.mean,z.se)
        writeP(B - 0.05, y.mean,y.se,xy.pval)
        writeP(C -0.05,z.mean,z.se,xz.pval)
}



## We will make a two part graphic
par(mfrow=c(1,2))

## X: 0
## y: 0.2 µM
## z: 0.4 µM

yTop <- 12  ## Limit for Y axis

##  ---  RT-PCR MMP1   --- ##

x <- c(0.8839034,0.42011158,0.65318013 , 0.88494528,1.900606, 1.2572536 )
x.mean <- mean(x)
x.se <- sd(x) / sqrt(length(x))
y <- c(5.067579666,2.630677502,1.881902881,1.61994864,3.356066695 )
y.mean <- mean(y)
y.se <- sd(y)/ sqrt(length(y))
z <-
c(13.38923048,3.677270765,3.559984278,10.83628903,12.20110874,12.8957108)
z.mean <- mean(z)
z.se <- sd(z)/ sqrt(length(z))

## -- Do t test and calculate the p values -- ##
xy.t <- t.test(y,x, alternative=c("greater"),var.equal=TRUE)
xy.pval <- xy.t$p.value

xz.t <- t.test(z, x, alternative=c("greater"),var.equal=TRUE)
xz.pval <- xz.t$p.value


arr <- c(x.mean,y.mean,z.mean)
mat <- matrix(arr,nrow=3,byrow=F)


barplot(mat,  ## The data
        beside=TRUE, ## juxtapose values in each column rather than stacking 
them
        ylim=c(0,yTop), ## limits for y axis
        xlim=c(0,3),
        width=1,
        space=c(0,0.1),##space: the amount of space (as a fraction of the 
average
bar width)
                            ##  left before each bar. beside=TRUE, can be
given
                            ## by 2 numbers, the space between bars within a 
group
                            ## and space betweens bars of different groups
        names=c('0.0 µM','0.2 µM','0.4 µM'),
        ylab='Relative Change',
      col=c('white'),
      cex.names=1,
        cex.axis=1,##cex.axis: expansion factor for numeric axis labels.
        cex.lab=1)

## First for the RT-PCR group
start <- 0.1
first <- start + 0.5
second <- start + 1.5
third <- start + 2.5

drawBarsAndPValueForGroup(first,second,third,x.mean,x.se,y.mean,y.se,z.mean,z.se,xy.pval,xz.pval)


##  --- Western MMP1 --- ##

x2 <- c(1.117373856,0.690266558,1.192359586 )
y2 <- c(3.53806369,3.895634049,6.653024511 )
z2 <- c(8.609814741,3.858564979,8.492977115)

x2.mean <- mean(x2)
x2.se <- sd(x2) / sqrt(length(x2))
y2.mean <- mean(y2)
y2.se <- sd(y2)/ sqrt(length(y2))
z2.mean <- mean(z2)
z2.se <- sd(z2)/ sqrt(length(2))

## -- Do t test and calculate the p values -- ##
xy2.t <- t.test(y2,x2, alternative=c("greater"),var.equal=TRUE)
xy2.pval <- xy2.t$p.value

xz2.t <- t.test(z2,x2,alternative=c("greater"),var.equal=TRUE)
xz2.pval <- xz2.t$p.value



arr <- c(x2.mean, y2.mean,z2.mean)
mat <- matrix(arr,nrow=3,byrow=F)

## mat now has the values of each type of experiment in individual columns




barplot(mat,  ## The date
        beside=TRUE, ## juxtapose values in each column rather than stacking 
them
        ylim=c(0,yTop), ## limits for y axis
        xlim=c(0,4),
        width=1,
        space=c(0,0.1),##space: the amount of space (as a fraction of the 
average
bar width)
                            ##  left before each bar. beside=TRUE, can be
given
                            ## by 2 numbers, the space between bars within a 
group
                            ## and space betweens bars of different groups
        names=c('0.0 µM','0.2 µM','0.4 µM'),
        ylab='Relative Change',
      col=c('white'),
      cex.names=0.8,
        cex.axis=1, ##cex.axis: expansion factor for numeric axis labels.
        cex.lab=1)


first <- 0.6
second <- first + 1
third <- first + 2
drawBarsAndPValueForGroup(first,second,third,x2.mean,x2.se,y2.mean,y2.se,z2.mean,z2.se,xy2.pval,xz2.pval)

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to