2016-10-31 3 views
1

Ich möchte grundsätzlich einen Bereich hinter einer Grafik schattieren.Wie benutzt man `polygon()` in der logarithmischen Skala?

Es ist einfach genug, in der linearen Skala zu tun.

x <- 1:20 
y <- x^2 
plot(x, y, type="l") 
polygon(c(10,10,15,15), 
     c(-100,600,600,-100), 
     col=rgb(0,1,0,0.3),border=FALSE) 

Produziert dies:

enter image description here

Aber sobald Sie setzen y auf einer logarithmischen Skala,

plot(x, y, type="l", log="y") 
polygon(c(10,10,15,15), 
     c(-100,600,600,-100), 
     col=rgb(0,1,0,0.3),border=FALSE) 

Nichts auftaucht.

enter image description here

+0

warum Sie nicht verwenden plot (x, log (y), type = „l ')? –

Antwort

0

Seien Sie vorsichtig, wenn sie mit log = "y" spielen. Wenn Ihr Wert y negativ ist, erhalten Sie NaN. Genau das ist hier passiert. Versuchen

plot(x, y, type="l", log="y") 
polygon(c(10,10,15,15), 
     c(1e-7,600,600,1e-7), ## log(1e-7) is small enough 
     col=rgb(0,1,0,0.3),border=FALSE) 

enter image description here

+0

Danke Zheyuan! – jesse