Re: [R] Barplot difficulties

2004-11-16 Thread Frank E Harrell Jr
Heather J. Branton wrote:
Hello. I am an R newbie struggling to learn and use R . I have read many 
portions of the R Reference Manual, as well as the FAQs. Given that I 
learn something new each time, I know I might be missing something 
obvious. But I appeal to your good nature to help me through this 
initial problem.

I have attached a pdf file to demonstrate what I desire and have listed 
what my data looks like in Excel (below). Following is the data and 
script I developed - which does not provide what I want.

Dear Heather - Please read Bill Cleveland's book The Elements of 
Graphing Data.  A MUCH better plot can be produced.  And let time be one 
of the first variables to vary.


--
Frank E Harrell Jr   Professor and Chair   School of Medicine
 Department of Biostatistics   Vanderbilt University
__
[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


[R] Barplot difficulties

2004-11-15 Thread Heather J. Branton
Hello. I am an R newbie struggling to learn and use R . I have read many 
portions of the R Reference Manual, as well as the FAQs. Given that I 
learn something new each time, I know I might be missing something 
obvious. But I appeal to your good nature to help me through this 
initial problem.

I have attached a pdf file to demonstrate what I desire and have listed 
what my data looks like in Excel (below). Following is the data and 
script I developed - which does not provide what I want.

My immediate goal is to create a barplot in R similar to the attached 
pdf chart. But I am stuck on several problems. First, I would like to 
have 2 labels below the barplot - one label for each bar and one for 
each group of bars. Second, I would like to vary color by group (instead 
of by bar). I assume that I need to do use some sort of syntax within 
the color option but have not yet figured it out. I have made two 
different plot attempts -- one resulting in the bars being grouped 
appropriately but missing the labels below the x-axis; the other giving 
me the individual labels but not grouped as I need.

This is my version information:
platform i386-pc-mingw32
arch i386
os   mingw32
system   i386, mingw32
status
major1
minor9.1
year 2004
month06
day  21
language R
Thank you in advance for any help you can give me.
...heather
--
Spreadsheet data to obtain attached pdf:
Year  GroupRate
2002  Alpha17.6
 Beta 13.0
 Gamma 8.9
 Delta 7.1
 Epsilon   6.0
 Zeta  5.4
 Eta   3.7
 Theta 2.5
2003  Beta 11.6
 Epsilon   8.7
 Zeta  6.4
 Theta 3.3
 Xi   10.2
 Omicron   7.9
2004  Alpha 8.9
 Gamma 8.0
 Delta 7.7
 Episilon  6.9
 Eta   6.1
 Xi3.8
 Omicron   1.2
--
R data set (sample.dat):
Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Xi,Omicron
2002,17.6,13.0,8.9,7.1,6.0,5.4,3.7,2.5,0,0
2003,0,11.6,0,0,8.7,6.4,0,3.3,10.2,7.9
2004,8.9,0,8.0,7.7,6.9,0,6.1,0,3.8,1.2
--
My R code attempt:
# Read in data
sample - t(read.table(sample.dat, sep=,, header=T))
# Set color palette
shade - palette(c(cyan2,yellow,magenta1))
# Set plot limits:
ymax - as.integer(max(sample)+1)
# Bar graph (get grouped plot but not grouped color nor individual 
labels below)
par(mar=c(6,4,6,4))
barplot(sample, beside=T, xlab=Test and Year, ylab=Rate, font.lab=3, 
axis.lty=1, col=shade)
legend(1,1, rownames(sample), xjust=-5.4, yjust=-2, col=shade, lty=1, lwd=2)
title(main=Rate by Test and Year, outer=F, font.main=2, line=3)

# Bar graph (get individual labels below but not grouped by year)
barplot(t(sample), beside=T, xlab=Test and Year, ylab=Rate, 
font.lab=3, axis.lty=1, las=2, col=shade)
legend(1,1, colnames(sample), xjust=-6, yjust=-7, col=shade, lty=1, lwd=2)
title(main=Rate by Test and Year, outer=F, font.main=2, line=3)

--



sample.pdf
Description: Adobe PDF document
__
[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

Re: [R] Barplot difficulties

2004-11-15 Thread Marc Schwartz
On Mon, 2004-11-15 at 19:03 -0500, Heather J. Branton wrote:
 Hello. I am an R newbie struggling to learn and use R . I have read many 
 portions of the R Reference Manual, as well as the FAQs. Given that I 
 learn something new each time, I know I might be missing something 
 obvious. But I appeal to your good nature to help me through this 
 initial problem.
 
 I have attached a pdf file to demonstrate what I desire and have listed 
 what my data looks like in Excel (below). Following is the data and 
 script I developed - which does not provide what I want.
 
 My immediate goal is to create a barplot in R similar to the attached 
 pdf chart. But I am stuck on several problems. First, I would like to 
 have 2 labels below the barplot - one label for each bar and one for 
 each group of bars. Second, I would like to vary color by group (instead 
 of by bar). I assume that I need to do use some sort of syntax within 
 the color option but have not yet figured it out. I have made two 
 different plot attempts -- one resulting in the bars being grouped 
 appropriately but missing the labels below the x-axis; the other giving 
 me the individual labels but not grouped as I need.

snip

How about something like this:

# Don't use 'sample' for the name here, as sample() is a function
MyData - t(read.table(sample.dat, sep= , , header = TRUE))

# These may be closer to the PDF chart colors
# You need to repeat them to color each group the same, rather
# than alternating bar colors
MyCols - rep(c(lightcyan,cornsilk,lavender), each = 10)

# adjust the margins
par(mar = c(7, 5, 6, 4))

# Now do the barplot:
# Note barplot() returns the bar midpoints in 'mp'
# use 'names.arg' for the individual bar names from MyData
# set 'las = 2' for vertical labels
# set 'ylim' to c(0, 20) for the y axis range
# set 'yaxt = n' to not draw the y axis tick marks
mp - barplot(MyData, beside = TRUE, col = MyCols, 
  main = Rate by Group and Year, 
  ylab = Rate, 
  names.arg = rep(rownames(MyData), 3), las = 2,
  cex.names = 0.75, ylim = c(0,20), yaxt = n)

# Now set up the y axis tick marks and labels
ticks - seq(0, 20, 2)
axis(2, at = ticks, las = 1, 
 labels = formatC(ticks, format = f, digits = 1))

# Draw a box around the whole thing
box()

# Now draw the years. Note from ?barplot that colMeans(mp) are
# the group midpoints
mtext(side = 1, at = colMeans(mp), line = 3.5, text = colnames(MyData))

# Now draw the x axis label
mtext(side = 1, line = 5.5, text = Test and Year)


Hope that gets you what you need. You can adjust the font sizes, etc. as
you require.

Note that unlike Excel, the 0 (zero) columns are not dropped. :-)

HTH,

Marc Schwartz

__
[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