[Rd] Bug in dev.print ? (PR#9801)

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat Jul 21 11:47:03 CEST 2007


Dietrich.Trenkler at uni-osnabrueck.de wrote:
> Ladies and Gentlemen,
>
> the following piece of code causes an annoying error:
>
>
>  > aa <- structure(list(BG = c(24, 16, 61, 30, 37, 33, 13, 4, -34,
> +     10, 33, 41, 6, 32, 39, 37, 36, -17, 60, 35, 22, 21, 29, 52,
> +     41, 62, -26, 30, -33, 27, 34, 28, 36, 29, -12, 38, 34, 32,
> +     40, 36, 39, 31, 19, 55, 28, 40, 38, 39, -31, 64, -22, 41,
> +     37, -33, 18, 31, 1, -33, 28, 36, -22), Kont = c(4, 7, 3,
> +     4, 6, 3, 4, 7, 7, 7, 2, 3, 4, 3, 3, 6, 3, 2, 6, 6, 4, 3,
> +     3, 4, 6, 4, 2, 1, 2, 4, 6, 6, 3, 4, 7, 6, 3, 6, 6, 6, 6,
> +     2, 7, 6, 4, 3, 6, 4, 5, 6, 7, 6, 3, 7, 7, 4, 4, 5, 6, 2,
> +     2), Jan = c(25, 31, -4, 15, 13, 12, 32, 20, 30, 30, 18, 1,
> +     30, 15, 8, 16, 7, 27, -3, 15, 20, 26, 18, -15, 8, -36, 25,
> +     19, 27, 18, 17, 21, 15, 9, 25, 14, 19, 19, 11, 17, 15, 18,
> +     21, -3, 19, 4, 14, 2, 32, 2, 29, 12, 13, 29, 30, 8, 30, 26,
> +     21, 15, 31), Feb = c(28, 31, -1, 16, 14, 14, 33, 19, 28,
> +     29, 18, 2, 32, 16, 7, 17, 8, 26, -3, 15, 21, 26, 20, -9,
> +     9, -29, 25, 21, 28, 21, 18, 21, 16, 10, 27, 16, 18, 18, 13,
> +     18, 15, 21, 23, -4, 24, 5, 15, 6, 30, 2, 30, 13, 15, 26,
> +     30, 11, 31, 28, 21, 17, 30), Mrz = c(30, 31, -1, 19, 17,
> +     19, 35, 19, 26, 30, 20, 9, 32, 21, 14, 19, 12, 27, 2, 18,
> +     23, 26, 23, 1, 12, -10, 24, 23, 27, 25, 20, 23, 23, 13, 26,
> +     18, 19, 20, 16, 19, 18, 24, 25, 3, 30, 9, 17, 12, 32, 4,
> +     30, 15, 17, 26, 30, 14, 32, 25, 23, 20, 29), Apr = c(35,
> +     31, 5, 21, 20, 23, 36, 19, 22, 30, 20, 16, 32, 25, 15, 21,
> +     14, 26, 9, 20, 26, 28, 26, 7, 16, 3, 22, 27, 24, 28, 22,
> +     23, 25, 16, 24, 20, 19, 20, 18, 22, 20, 24, 27, 12, 37, 14,
> +     20, 21, 25, 6, 29, 18, 17, 23, 30, 18, 32, 23, 23, 22, 26),
> +     Mai = c(40, 32, 12, 27, 26, 26, 34, 19, 18, 31, 22, 21, 32,
> +         29, 22, 23, 22, 24, 16, 24, 30, 28, 30, 16, 22, 13, 19,
> +         32, 20, 27, 27, 24, 33, 20, 21, 22, 21, 21, 23, 25, 25,
> +         29, 26, 19, 40, 21, 24, 27, 23, 9, 26, 24, 20, 19, 31,
> +         24, 32, 20, 24, 28, 24), Jun = c(41, 32, 17, 33, 30,
> +         29, 34, 18, 16, 31, 25, 26, 31, 32, 27, 26, 28, 20, 20,
> +         27, 32, 29, 32, 23, 27, 21, 17, 35, 18, 29, 31, 26, 38,
> +         23, 18, 27, 22, 23, 31, 29, 29, 34, 25, 23, 39, 28, 28,
> +         30, 19, 12, 26, 28, 22, 15, 31, 27, 31, 17, 25, 32, 22),
> +     Jul = c(42, 33, 19, 35, 33, 30, 34, 18, 14, 32, 26, 29, 31,
> +         36, 32, 29, 28, 21, 24, 30, 33, 30, 34, 23, 30, 26, 17,
> +         35, 18, 28, 33, 27, 39, 22, 19, 29, 25, 25, 34, 32, 32,
> +         37, 24, 25, 36, 29, 30, 32, 18, 14, 25, 29, 22, 15, 32,
> +         32, 31, 17, 28, 34, 21), Aug = c(43, 33, 17, 35, 33,
> +         31, 34, 18, 16, 32, 27, 28, 30, 35, 30, 29, 26, 23, 21,
> +         30, 32, 31, 34, 20, 29, 21, 20, 35, 18, 28, 33, 28, 39,
> +         21, 18, 30, 25, 26, 33, 31, 32, 37, 24, 22, 34, 29, 29,
> +         31, 19, 14, 26, 29, 22, 17, 32, 31, 31, 19, 28, 34, 24),
> +     Sep = c(43, 33, 13, 32, 29, 28, 33, 18, 19, 33, 26, 25, 31,
> +         32, 26, 26, 24, 28, 17, 27, 31, 30, 32, 16, 25, 11, 23,
> +         34, 19, 28, 31, 28, 34, 20, 19, 28, 25, 26, 28, 28, 29,
> +         33, 23, 17, 35, 24, 27, 27, 20, 11, 26, 26, 24, 18, 32,
> +         29, 31, 22, 28, 29, 28), Okt = c(37, 32, 5, 27, 24, 23,
> +         32, 18, 21, 32, 24, 17, 31, 25, 17, 23, 17, 29, 9, 24,
> +         29, 29, 27, 5, 20, -5, 25, 29, 21, 26, 27, 26, 27, 17,
> +         20, 22, 22, 24, 21, 24, 25, 28, 23, 9, 33, 18, 25, 19,
> +         22, 6, 27, 22, 21, 22, 32, 23, 32, 21, 27, 27, 31), Nov = c(31,
> +         32, -2, 21, 18, 18, 32, 19, 25, 32, 21, 10, 31, 19, 11,
> +         19, 11, 27, 2, 20, 26, 28, 21, -5, 15, -24, 25, 25, 25,
> +         23, 23, 25, 19, 12, 22, 17, 21, 21, 13, 20, 18, 23, 22,
> +         0, 28, 13, 19, 10, 28, 4, 27, 17, 17, 26, 31, 17, 31,
> +         23, 25, 20, 31), Dez = c(27, 32, -4, 16, 14, 11, 31,
> +         19, 29, 30, 19, 2, 31, 14, 7, 17, 7, 27, 0, 16, 22, 27,
> +         16, -13, 10, -35, 25, 20, 26, 21, 18, 22, 14, 9, 23,
> +         14, 19, 20, 11, 17, 16, 20, 22, -3, 23, 6, 17, 3, 30,
> +         3, 29, 14, 15, 29, 31, 10, 30, 26, 23, 18, 33)), .Names = c("BG",
> +     "Kont", "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul",
> +     "Aug", "Sep", "Okt", "Nov", "Dez"), row.names = c("Abu 
> Dhabi             ",
> +     "Acapulco              ", "Anchorage             ", 
> "Antalya               ",
> +     "Athen                 ", "Atlanta               ", 
> "Bangkok               ",
> +     "Bogota                ", "BuenosAires           ", 
> "Caracas               ",
> +     "Casablanca            ", "Chicago               ", 
> "ColomboSriLanka       ",
> +     "Dallas                ", "Denver                ", 
> "FaroAlgarve           ",
> +     "GrandCanyonArizona    ", "Harare                ", 
> "Helsinki              ",
> +     "HeraklionKreta        ", "Hongkong              ", 
> "Honolulu              ",
> +     "Houston               ", "Irkutsk               ", 
> "Istanbul              ",
> +     "JakutskNordostsibirien", "Johannesburg          ", 
> "Kairo                 ",
> +     "Kapstadt              ", "Kathmandu             ", 
> "LarnakaZypern         ",
> +     "Las Palmas            ", "Las Vegas             ", 
> "Lhasa                 ",
> +     "Lima                  ", "Lissabon              ", "Los 
> Angeles           ",
> +     "Madeira               ", "Madrid                ", 
> "Malaga                ",
> +     "Mallorca              ", "Marrakesch            ", "Mexico 
> City           ",
> +     "Moskau                ", "Neu Delhi             ", "New 
> York              ",
> +     "Palermo               ", "PekingBeijing         ", 
> "PerthAustralien       ",
> +     "Reykjavik             ", "RioDeJaneiro          ", 
> "Rom                   ",
> +     "SanFrancisco          ", "SantiagoDeChile       ", 
> "SantoDomingoKaribik   ",
> +     "Shanghai              ", "Singapur              ", 
> "SydneyAustralien      ",
> +     "Teneriffa             ", "Tunis                 ", 
> "Windhoek              "),
> +     class = "data.frame")
>  >
>  > attach(aa)
>  > par(mfrow=c(4,3))
>  > m 
> <-c("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember")
>  > for(i in 1:12)
> + 
> plot(BG,aa[,i+2],main=m[i],xlab="Breitengrad",ylab="Temperatur",ylim=c(-35,35))
>  > dev.print(device = postscript, 
> width=4,height=5,horizontal=TRUE,file="c://test.ps")
> windows
>       2
>  > # That's fine
>  > # Here comes the error
>  > dev.print(device = postscript, width=5 
> ,height=4,horizontal=TRUE,file="c://test.ps")
> Error in dev.copy(device = function (file = ifelse(onefile, "Rplots.ps",  :
>         invalid graphics state
>  > # From now on plotting is impossible:
>  > plot(1:2)
> Error in plot.new() : figure margins too large
>  > # As a "remedy" I restart R
>
>   
There's a generic issue when dev.print() goes wrong in that it leaves 
the target device open. Have a look at dev.list() and possibly use 
dev.off() for a less drastic remedy.

I'm not at a Windows machine so I'm unsure whether the "invalid graphics 
state" is an issue in itself or it is just that you set the figure 
region so that there is no room for both the figure region and the margins.

>
> --please do not edit the information below--
>
> Version:
>  platform = i386-pc-mingw32
>  arch = i386
>  os = mingw32
>  system = i386, mingw32
>  status =
>  major = 2
>  minor = 5.0
>  year = 2007
>  month = 04
>  day = 23
>  svn rev = 41293
>  language = R
>  version.string = R version 2.5.0 (2007-04-23)
>
> Windows XP (build 2600) Service Pack 2.0
>
> Locale:
> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United 
> States.1252;LC_MONETARY=English_United 
> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>
> Search Path:
>  .GlobalEnv, aa, package:stats, package:graphics, package:grDevices, 
> package:utils, package:datasets, package:methods, Autoloads, package:base
>
>
>



More information about the R-devel mailing list