R polygon: fill values >0 in a density plot -
i have following:
set.seed(513) x1 = rnorm(12^6, 5,5) x2 = x1-10 plot(density(x1),xlim = c(-25,25), ylim = c(0,0.09), xaxs = "i", yaxs = "i", main ="", xaxt = "n", yaxt = "n", xlab = "", ylab = "", col = "blue") lines(density(x2), col = "red") axis(side = 1, pos = 0, @ = c(-30,-20,-10,0,10,20,30), labels = c("",-2,-1,0,+1,+2,""), tck = -0.02) lines(x=c(0,0),y=c(0,1), lty = 3) polygon(density(x1[x1>=0]), col = rgb(0,0,0.5,0.5)) polygon(density(x2[(x2)>=0]), col = rgb(0.5,0,0,0.5)) par(xpd=true) text("frequency", x = -29, y = 0.045, srt = 90) par(xpd=false)
i make plot shows 2 normal curves, space x>0 having filled colours. tried using polygon
seems struggle density (it seems using x1[x1>=0]
limits density function data, think need make distribution first , then cut it)
i fill space under curves both lines x 0 or larger.
i managed make rather inelegant solution...
set.seed(513) x1 = rnorm(12^6, 5,5) x2 = x1-10 plot(density(x1),xlim = c(-25,25), ylim = c(0,0.09), xaxs = "i", yaxs = "i", main ="", xaxt = "n", yaxt = "n", xlab = "", ylab = "", col = "blue") lines(density(x2), col = "red") axis(side = 1, pos = 0, @ = c(-30,-20,-10,0,10,20,30), labels = c("",-2,-1,0,+1,+2,""), tck = -0.02) lines(x=c(0,0),y=c(0,1), lty = 3) x = density(x1)[1] y = density(x1)[2] x = as.numeric(x[[1]]) y = as.numeric(y[[1]]) df = data.frame(x,y) polygon(c(df$x[df$x>=0],0),c(df$y[df$x>=0],0),col = rgb(0,0,0.5,0.5)) x = density(x2)[1] y = density(x2)[2] x = as.numeric(x[[1]]) y = as.numeric(y[[1]]) df = data.frame(x,y) polygon(c(df$x[df$x>=0],0),c(df$y[df$x>=0],0),col = rgb(0.5,0,0,0.5)) par(xpd=true) text("frequency", x = -29, y = 0.045, srt = 90) par(xpd=false)
Comments
Post a Comment