The R Project SVN R

Rev

Rev 57488 | Rev 71128 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23048 ripley 1
#### Regression tests for GRAPHICS & PLOTS
2
 
57488 ripley 3
pdf("reg-plot.pdf", paper="a4r", encoding ="ISOLatin1.enc", compress = FALSE)
4
 
23048 ripley 5
## since we supply the font metrics, the results depend only on
56953 ripley 6
## the encoding used: Windows is different from Unix by default.
23048 ripley 7
 
57488 ripley 8
options(warn = 1) # print as they occur
23048 ripley 9
 
10
plot(0) # this should remain constant
11
str(par(c("usr","xaxp","yaxp")))
12
 
13
 
14
 
15
### Test for centring of chars.  All the chars which are plotted should
16
### be centred, and there should be no warnings about
17
### font metrics unknown for character `?'
18
 
19
par(pty="s")
20
plot(c(-1,16), c(-1,16), type="n", xlab="", ylab="", xaxs="i", yaxs="i")
21
title("Centred chars in default char set (ISO Latin1)")
22
grid(17, 17, lty=1)
32436 ripley 23
known <- c(32:126, 160:255)
23048 ripley 24
 
25
for(i in known) {
26
    x <- i %% 16
27
    y <- i %/% 16
44151 ripley 28
    points(x, y, pch=-i)
23048 ripley 29
}
30
 
31
par(pty="m")
32
 
33
## PR 816 (label sizes in dotchart)
34
 
35
### Prior to 1.2.2, the label sizes were unaffected by cex.
36
 
37
dotchart(VADeaths, main = "Death Rates in Virginia - 1940", cex = 0.5)
38
dotchart(VADeaths, main = "Death Rates in Virginia - 1940", cex = 1.5)
39
 
40
## killed by 0 prior to 1.4.0 and in 1.4.1:
41
t1 <- ts(0:100)
42
## only warnings about values <= 0
43
plot(t1, log = "y")
44
plot(cbind(t1, 10*t1, t1 - 4), log="y", plot.type = "single")
45
stopifnot(par("usr")[4] > 3) # log10: ylim[2] = 1000
46
 
47
 
48
## This one needs to be looked at.
49
## lty = "blank" killed the fill colour too.
50
plot(1:10, type="n")
51
polygon(c(1, 3, 3, 1), c(1, 1, 3, 3), col="yellow", border="red", lty="blank")
52
rect(6, 6, 10, 10,  col="blue", border="red", lty="blank")
53
## in 1.5.0 all omit the fill colours.
54
with(trees, symbols(Height, Volume, circles=Girth/24, inches=FALSE,
55
                    lty="blank", bg="blue"))
56
## in 1.5.0 ignored the lty.
57
 
58
## axis() and par(mgp < 0) {keep this example S+ compatible!}:
59
lt <- if(is.R()) "31" else 2
60
x <- seq(-2,3, len=1001)
61
op <- par(tck= +0.02, mgp = -c(3,2,0))
62
plot(x, x^2 - 1.2, xaxt = "n", xlab="", type ='l', col = 2,
63
     main = "mgp < 0: all ticks and labels inside `frame'")
64
x <- -2:3
65
lines(x, x^2 - 1.2, type ="h", col = 3, lwd=3)
66
axis(1, pos = 0, at=-1:1, lty = lt, col=4)## col & lty work only from R 1.6
67
par(op)
68
axis(1, pos = 0, at=c(-2,2,3), lty = lt, col=4)
69
mtext(side=1,"note the x-ticks on the other side of the bars")
70
 
23846 maechler 71
## plot.table(): explicit xlab and ylab for non-1D
23048 ripley 72
plot(UCBAdmissions)# default x- and y-lab
73
plot(UCBAdmissions, xlab = "x label", ylab = "YY")# wrong in 1.5.1
23846 maechler 74
##   axis suppression
75
plot(tt <- table(c(rep(0,7), rep(1,4), rep(5, 3))), axes = FALSE)
76
plot(tt, xaxt = "n")
77
## wrong till (incl.) 1.6.x
25869 maechler 78
 
79
## legend with call
80
lo <- legend(2,2, substitute(hat(theta) == that, list(that= pi)))
81
stopifnot(length(lo$text$x) == 1)
82
## length() was 3 till 1.7.x
26717 maechler 83
 
84
plot(ecdf(c(1:4,8,12)), ylab = "ECDF", main=NULL)
85
## ylab didn't work till 1.8.0
29381 maechler 86
 
87
plot(1:10, pch = NA) # gave error till 1.9.0
88
points(1:3, pch=c("o",NA,"x"))# used "N"
89
try(points(4, pch=c(NA,FALSE)))# still give an error
30819 maechler 90
 
91
## 'lwd' should transfer to plot symbols
92
legend(1,10, c("A","bcd"), lwd = 2:3, pch= 21:22, pt.bg="skyblue",
93
       col = 2:3, bg = "thistle")
94
## (gave an error for 2 days in "2.0.0 unstable")
33335 maechler 95
 
96
x <- 2^seq(1,1001, length=20)
97
plot(x, x^0.9, type="l", log="xy")
98
## gave error 'Infinite axis extents [GEPretty(1.87013e-12,inf,5)]' for R 2.0.1
35127 maechler 99
 
100
plot(as.Date("2001/1/1") + 12*(1:9), 1:9)
101
## used bad 'xlab/ylab' in some versions of R 2.2.0(unstable)
39725 maechler 102
 
40032 maechler 103
## dotchart() restoring par()
39725 maechler 104
Opar <- par(no.readonly=TRUE) ; dotchart(1:4, cex= 0.7)
105
Npar <- par(no.readonly=TRUE)
40032 maechler 106
ii <- c(37, 50:51, 58:59, 63)
107
stopifnot(identical(names(Opar)[ii],
108
                    c("mai","pin","plt","usr","xaxp","yaxp")),
109
          identical(Opar[-ii], Npar[-ii]))
110
## did not correctly restore par("mar") up to (incl) R 2.4.0
111
 
43202 maechler 112
## plot.function()     [n=11, ... : since we store and diff PS file !]
113
plot(cos,       xlim=c(-5,5), n=11, axes=FALSE); abline(v=0)
43181 maechler 114
## did *not* plot for negative x up to R 2.5.1
43202 maechler 115
plot(sin, -2,3, xlim=c(-5,5), n=11, axes=FALSE, xlab="")# plot from -2
116
axis(1, at=c(-2,3), tcl=-1); axis(1, at=c(-5,5))
117
## (from,to) & xlim  should work simultaneously
118
 
43181 maechler 119
plot(cos, -7,7, n=11, axes=FALSE)
120
## gave wrong ylab in R 2.6.0
121
plot(cos, -7,7, ylab = "Cosine  cos(x)", n=11, axes=FALSE)
122
## partial matching of 'ylab'; mapping  [0,1] (not [-7.7]):
43286 ripley 123
## margins chosen to avoid rouding error showing to 2dp.
124
op <- par(mar=c(5,4.123,4,2)+0.1)
43181 maechler 125
plot(gamma, yla = expression(Gamma(x)), n=11, yaxt="n")
43286 ripley 126
par(op)
43202 maechler 127
 
43526 maechler 128
## plot.ts(x, y) could get the labels wrong in R <= 2.6.0:
129
x <- ts(1:5);x1 <- lag(x, 2); plot(x1, x, axes=FALSE)
43636 maechler 130
 
131
# adding a curve in log scale :
132
curve(5*exp(-x), 0.1, 100, n = 3, log="x", ylab="", axes=FALSE)
133
curve(5*exp(-x), add=TRUE, n = 3, col=2,lwd=3)
134
## should fully overplot; wrong default xlim in 2.6.1
135
## (and *slightly* wrong up to 2.6.0)
45449 maechler 136
 
137
## Axis() calls via plot()  {[xy]axt to keep *.ps small}
138
x <- as.Date("2008-04-22 09:45") + (i <- c(0,4))
139
plot(x,    xaxt="n")# not ok in 2.6.2, nor 2.7.0
140
plot(x, i, yaxt="n")# ok in 2.6.2  and 2.7.0
141
plot(i, x, xaxt="n")# ok in 2.6.2 and not in 2.7.0
54481 ripley 142
 
143
## table methods should be bypassed:
144
dotchart(table(infert$education))
145
## failed in 2.12.[12]
62846 maechler 146
 
147
## cex as "..."  in "high level" function
148
hc <- hclust(dst <- dist(c(1:2, 5)), method="ave")
149
plot(hc, cex = 2, axes=FALSE, ann=FALSE)
150
## cex was not used in 3.0.[01]
151