Marc Schwartz wrote:
>Using the data that is in the online plot rather than the above, here  
>is a first go. Note that I am not drawing the background grid in the  
>barplot or the lines for table below it. These could be added if you  
>really need them.

Note: I snipped out the syntax from Marc's earlier answer because it is very 
lengthy. At the end of this email I have appended an edited version of his 
syntax. The part that I have added is clearly marked. This syntax runs without 
"error" but the output is clearly not lined up.

Marc's original syntax works great, as long as X11() is left to it's default 
dimensions (square). Unfortunately, after working with my report, I realized 
that I need to make the barplot shorter and longer, rather than square. When I 
try to change the shape of the output, I start running into problems. 

After looking through the documentation, it seemed as though X11() would help 
me. I tried adding this to Marc's original syntax.

X11(height=3, width=4.5, pointsize=10)

Thus, things looked more like this:
X11(height=3, width=4.5, pointsize=10)
mp <- barplot(MyData, beside = TRUE, ylim = c(0, 100),
               yaxt = "n", cex.names = MyCex, col = MyCols)

Unfortunately, this results in two problems.

1) Because I have now changed the shape of the output area, the additional 
text and labels are no longer shown on the plot. The barplot itself looks 
great, but the labels do not.

2) I seem to be starting two separate X11() displays, although I only want to 
start one.

The following syntax demonstrates what I am playing with right now. I 
understand that the syntax no longer works because the labels are falling 
outside of the shape set by X11(). Unfortunately, I haven't been able to figure 
out how to fix it. If posible, I'd like to move the barplot to the right, to 
give me more room to print out the labels, but I don't see how this is 
possible.

# --------------------------------------------------
# Create  data   
MyData <- matrix(c(57.1,52.3,13.5,13.9,7.9,8.8,5.4,5.6,16.1,19.4), nrow=2)      
                                                                                
                         
                                                                                
                                                          
colnames(MyData) <- c("0 times", "1-2 times", "3-5 times", "6-9 Occasions", 
"10 or more\nOccasions")  

rownames(MyData) <- c("Androscoggin", "Maine")
          
# Set graph margins to make room for labels
par(mar = c(5, 8, 4, 1))

# Set colors
MyCols <- c("black", "grey80")

# Set label size
MyCex = 0.75

# Set lines for table data
MyLines <- 2:3

# This is the part that I added.
# And it seems to mess things up, although I do want the basic shape.
# Is there a better way to get this shape?
X11(height=3, width=4.5, pointsize=10)

# do barplot, getting bar midpoints in 'mp'
mp <- barplot(MyData, beside = TRUE, ylim = c(0, 100), yaxt = "n", cex.names = 
MyCex, col = MyCols)

# Put a box around it
box()

# Draw y axis tick marks and labels
axis(2, at = seq(0, 100, 10), las = 1)

# Draw values below plot
mtext(side = 1, text = MyData,
       at = rep(colMeans(mp), each = nrow(MyData)),
       line = MyLines, cex = MyCex)

# Get min value for the x axis. See ?par 'usr'
min.x <- par("usr")[1]

# Draw categories using mtext
mtext(side = 1, line = MyLines, text = rownames(MyData),
       at = min.x - max(strwidth(rownames(MyData), cex = MyCex)),
       adj = 0, cex = MyCex)

# Draw the colored boxes
VertOff <- strheight("X", cex = MyCex) * c(6, 8)
HorizOff <- min.x - (0.85 * max(strwidth(rownames(MyData))))

# I'm sure these still exist, but they are now being drawn "off-screen"
points(rep(HorizOff, nrow(MyData)), par("usr")[3] - VertOff, bg = MyCols, pch = 
22, xpd = TRUE, cex = MyCex) 


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to