[R] Problems with lattice-histograms or png within loops
Richard.Cotton at hsl.gov.uk
Richard.Cotton at hsl.gov.uk
Fri Dec 5 18:05:21 CET 2008
> I have a question concerning the use of lattice plots within for-loops.
> I want to create a png file containing a lattice histogram which works
out
> fine (part 1).
> When I loop the whole code, the graphic file does not contain anything
(part
> 2).
> I can fix it by wrapping the histogram function into a print command
(part
> 3).
> Why is that so? Why can I not loop it directly?
>
> TIA,
> Mark
>
> attach(iris)
>
> ### part 1
> png(filename = "graphic_1.png")
> histogram( ~ Sepal.Length | Species, data = iris)
> dev.off()
>
> ### part 2
> for (i in c(1))
> {
> png(filename = "graphic_2.png")
> histogram( ~ Sepal.Length | Species, data = iris)
> dev.off()
> }
>
> ### part 3
> for (i in c(1))
> {
> png(filename = "graphic_3.png")
> print(histogram( ~ Sepal.Length | Species, data = iris))
> dev.off()
> }
This is FAQ 7.22:
http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f
The help page on ?histogram also mentions that the function returns "an
object of class 'trellis'" and "the 'print' method (usually called by
default) will plot it on an appropriate plotting device"
It's a good idea to get into the habit of calling print any time you
create a lattice graph. If you reorder your code like
h1 <- histogram( ~ Sepal.Length | Species, data = iris)
png(filename = "graphic_h1.png")
print(h1)
dev.off()
then you won't end up with an open device if drawing the plot fails.
Regards,
Richie.
Mathematical Sciences Unit
HSL
------------------------------------------------------------------------
ATTENTION:
This message contains privileged and confidential inform...{{dropped:20}}
More information about the R-help
mailing list