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.

enter image description here

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) 

enter image description here


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -