I am using barplot, and barplot2 in the gregmisc bundle, in the following way: barplot2(sort(xtabs(expend / 1000 ~ theme)), col = c(mdg7, mdg8, mdg3, mdg1), horiz = T, las = 1, xlab = "$ '000", plot.grid = T) The problem is that the values of 'theme', which is a factor, are in some cases rather long, so that I would like to wrap/split them at a space once they exceed, say, 20 characters. What I'm doing now is specifying names.arg manually with '\n' where I want the breaks, but I would like to automate the process. I've looked for a solution using 'strwrap', but am not sure how to apply it in this situation. Jan Smit Consultant Economic and Social Commission for Asia and the Pacific
This may not be the best way but in the past I think I have done something like levels(x) <- paste(strwrap(levels(x),20,prefix = ""),collapse = "\n") Tom> -----Original Message----- > From: Jan P. Smit [mailto:janpsmit at gmail.com] > Sent: Thursday, 14 April 2005 11:48 AM > To: r-help at stat.math.ethz.ch > Subject: [R] Wrapping long labels in barplot(2) > > > I am using barplot, and barplot2 in the gregmisc bundle, in the > following way: > > barplot2(sort(xtabs(expend / 1000 ~ theme)), > col = c(mdg7, mdg8, mdg3, mdg1), horiz = T, las = 1, > xlab = "$ '000", plot.grid = T) > > The problem is that the values of 'theme', which is a factor, are in > some cases rather long, so that I would like to wrap/split them at a > space once they exceed, say, 20 characters. What I'm doing now is > specifying names.arg manually with '\n' where I want the > breaks, but I > would like to automate the process. > > I've looked for a solution using 'strwrap', but am not sure > how to apply > it in this situation. > > Jan Smit > > Consultant > Economic and Social Commission for Asia and the Pacific > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html >
I think this might have been my code mapply(paste,strwrap(levels(ncdata$Chapter),18,simplify = FALSE),collapse = "\n") Tom> -----Original Message----- > From: Jan P. Smit [mailto:janpsmit at gmail.com] > Sent: Thursday, 14 April 2005 5:15 PM > To: Mulholland, Tom > Cc: r-help at stat.math.ethz.ch > Subject: Re: [R] Wrapping long labels in barplot(2) > > > Dear Tom, > > Many thanks. I think this gets me in the right direction, but > concatenates all levels into one long level. Any further thoughts? > > Best regards, > > Jan > > > Mulholland, Tom wrote: > > This may not be the best way but in the past I think I have > done something like > > > > levels(x) <- paste(strwrap(levels(x),20,prefix = > ""),collapse = "\n") > > > > Tom > > > > > >>-----Original Message----- > >>From: Jan P. Smit [mailto:janpsmit at gmail.com] > >>Sent: Thursday, 14 April 2005 11:48 AM > >>To: r-help at stat.math.ethz.ch > >>Subject: [R] Wrapping long labels in barplot(2) > >> > >> > >>I am using barplot, and barplot2 in the gregmisc bundle, in the > >>following way: > >> > >>barplot2(sort(xtabs(expend / 1000 ~ theme)), > >> col = c(mdg7, mdg8, mdg3, mdg1), horiz = T, las = 1, > >> xlab = "$ '000", plot.grid = T) > >> > >>The problem is that the values of 'theme', which is a > factor, are in > >>some cases rather long, so that I would like to wrap/split > them at a > >>space once they exceed, say, 20 characters. What I'm doing now is > >>specifying names.arg manually with '\n' where I want the > >>breaks, but I > >>would like to automate the process. > >> > >>I've looked for a solution using 'strwrap', but am not sure > >>how to apply > >>it in this situation. > >> > >>Jan Smit > >> > >>Consultant > >>Economic and Social Commission for Asia and the Pacific > >> > >>______________________________________________ > >>R-help at stat.math.ethz.ch 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-help at stat.math.ethz.ch mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > >
Jan P. Smit wrote:> I am using barplot, and barplot2 in the gregmisc bundle, in the > following way: > > barplot2(sort(xtabs(expend / 1000 ~ theme)), > col = c(mdg7, mdg8, mdg3, mdg1), horiz = T, las = 1, > xlab = "$ '000", plot.grid = T) > > The problem is that the values of 'theme', which is a factor, are in > some cases rather long, so that I would like to wrap/split them at a > space once they exceed, say, 20 characters. What I'm doing now is > specifying names.arg manually with '\n' where I want the breaks, but I > would like to automate the process. > > I've looked for a solution using 'strwrap', but am not sure how to apply > it in this situation. >You may find the staxlab function in the plotrix package to be helpful. It STaggers AXis LABels to allow fairly long strings to be displayed without overlapping. Jim