[R] Plotting question: Problem with strwidth in 2.7.1
Lauri Nikkinen
lauri.nikkinen at iki.fi
Mon Jun 30 14:40:59 CEST 2008
R users,
I have a problem with function strwidth in 2.7.1. I'm trying to set
the plot margins in a way that horizontal
column labels will fit to the graph. tmp.t is a list of data.frame
objects. This code works well in 2.6.0.
...snip..
library(gplots)
for (i in names(tmp.t)) {
bmp(filename=paste(i, "_", Sys.Date(), ".bmp", sep=""),
width=1038, height=820, res=1200)
maxim <- max(strwidth(as.character(colnames(tmp.t[[i]])),
units="inches"))*4.5
opar <- par(mar=c(3,maxim,2,2), bg="white", cex=1.6, oma =
c(0, 0, 2, 0), mgp=c(3,0.5,0), xpd=TRUE)
colo <- c("red", "lightblue1", "orange", "yellow")
xmax <- max(unlist(lapply(tmp.t[i], function(x) apply(x, 2,
sum))) + 15)
bar <- barplot2(tmp.t[[i]],
horiz=TRUE,
names.arg=as.character(colnames(tmp.t[[i]])),
las=1,
cex.names=0.7,
cex.main=0.9,
cex.axis=0.7,
xlim=c(0, xmax),
col=colo,
plot.grid = TRUE
)
box()
dev.off()
}
...snip...
Now running this script I get an error message
Error in plot.new() : figure margins too large
I found from http://cran.r-project.org/src/base/NEWS that
o Use of strwidth/height(units="user") (the default) is again an
error before a user coordinate system has been set on the
device, rather than giving nonsensical values (the effect of
r31367).
Does this have something to do with my problem? How should I modify my
code to get it work in R 2.7.1?
Thanks
Lauri
> sessionInfo()
R version 2.7.1 (2008-06-23)
i386-pc-mingw32
locale:
LC_COLLATE=Finnish_Finland.1252;LC_CTYPE=Finnish_Finland.1252;LC_MONETARY=Finnish_Finland.1252;LC_NUMERIC=C;LC_TIME=Finnish_Finland.1252
attached base packages:
[1] tcltk stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] TeachingDemos_2.2 tkrplot_0.0-18 gplots_2.6.0 gdata_2.4.2
[5] gtools_2.5.0 RODBC_1.2-3
loaded via a namespace (and not attached):
[1] tools_2.7.1
More information about the R-help
mailing list