I am trying to make a barplot with a broken axis using gap.barplot (in the indispensable plotrix package). This works well when the data is a vector:> twogrp<-c(rnorm(10)+4,rnorm(10)+20) > gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),ylab="Groupvalues",main="Barplot with gap") But when the data is an array (for a bar plot with multiple series) I get an error and a strange plot with no y-tics and bars stretching downwards, as if all the values were negative:> twogrp2<-array(twogrp, dim=c(2,5)) >gap.barplot(twogrp2,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),ylab="Group values",main="Barplot with gap") Error in rect(xtics[bigones] - halfwidth, botgap, xtics[bigones] + halfwidth, : cannot mix zero-length and non-zero-length coordinates However, the main title and axis labels do appear correctly. Are data arrays unsupported for gap.barplot, or am I missing something? Thanks, Drew Steen
On 2011-04-04 06:39, Andrew D. Steen wrote:> I am trying to make a barplot with a broken axis using gap.barplot (in the > indispensable plotrix package). This works well when the data is a vector: > >> twogrp<-c(rnorm(10)+4,rnorm(10)+20) >> gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),ylab="Group > values",main="Barplot with gap") > > But when the data is an array (for a bar plot with multiple series) I get an > error and a strange plot with no y-tics and bars stretching downwards, as if > all the values were negative: > >> twogrp2<-array(twogrp, dim=c(2,5)) >> > gap.barplot(twogrp2,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),ylab="Group > values",main="Barplot with gap") > > Error in rect(xtics[bigones] - halfwidth, botgap, xtics[bigones] + > halfwidth, : > cannot mix zero-length and non-zero-length coordinates > > However, the main title and axis labels do appear correctly. > > Are data arrays unsupported for gap.barplot, or am I missing something?Looks like they're not supported, as you could easily see from the code. But do gapped stacked barplots even make sense? Not to me. Still, I think that the plotrix documentation is somewhat spotty. The help page for gap.barplot indicates that the input 'y' should be 'data values'; not overly informative. Peter Ehlers> > Thanks, > Drew Steen > > ______________________________________________ > R-help at 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.
On 04/04/2011 11:39 PM, Andrew D. Steen wrote:> I am trying to make a barplot with a broken axis using gap.barplot (in the > indispensable plotrix package).Aww, gee, you've won me.> This works well when the data is a vector: > >> twogrp<-c(rnorm(10)+4,rnorm(10)+20) >> gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),ylab="Group > values",main="Barplot with gap") > > But when the data is an array (for a bar plot with multiple series) I get an > error and a strange plot with no y-tics and bars stretching downwards, as if > all the values were negative: > >> twogrp2<-array(twogrp, dim=c(2,5)) >> > gap.barplot(twogrp2,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),ylab="Group > values",main="Barplot with gap") > > Error in rect(xtics[bigones] - halfwidth, botgap, xtics[bigones] + > halfwidth, : > cannot mix zero-length and non-zero-length coordinates > > However, the main title and axis labels do appear correctly. > > Are data arrays unsupported for gap.barplot, or am I missing something? >Hi Drew, You are right, as is Peter, gap.barplot doesn't support arrays, only vectors (I'll fix the docs). However, it wasn't too hard to whip up a rough but perhaps serviceable fix in the attached function. You may need to do some mods to the function to get exactly what you want. Try this: # your twogrp2 left out the high values twogrp2<-array(twogrp,dim=c(2,10)) source("gap.barp.R") gap.barp(twogrp2,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20), xtics=1:10,ylab="Groupvalues",main="Barplot with gap",col=2:3) gap.barp returns the modified y values so that you can include the error bars. To paraphrase the immortal P.J. O'Rourke, "Perhaps R users shouldn't do some things in plots, but they certainly can do them" Jim -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: gap.barp.R URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110405/26bd33df/attachment.pl>