2016-10-31 4 views
1

Je veux fondamentalement ombrer une zone derrière un graphique.Comment utiliser `polygon()` dans une échelle logarithmique?

Il est assez facile à faire en échelle linéaire.

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) 

génère ce:

enter image description here

Mais une fois que vous mettez y sur une échelle logarithmique,

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) 

Rien ne montre.

enter image description here

+0

pourquoi utilisez-vous pas tracé (x, log (y), type = « l ')? –

Répondre

0

Soyez prudent lorsque vous jouez avec log = "y". Si votre valeur est négative, vous obtenez NaN. C'est exactement ce qui s'est passé ici. Essayez

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

Merci Zheyuan! – jesse