1
Я пытаюсь получить два распределения на одном графике с функцией googlevis gvisAreaChart
, но она не работает, как я хочу:Два распределения в с googleVis в R
library(googleVis)
df <- data.frame(a=rnorm(n = 400,mean = .1,sd = .01),b=rnorm(n = 400,mean = .13,sd = .01))
dfplot <- rbind(data.frame(x=density(df$a)$x,y=density(df$a)$y,var=rep("a",512)),data.frame(x=density(df$b)$x,y=density(df$b)$y,var=rep("b",512)))
plot(gvisAreaChart(dfplot,xvar = 'x',yvar='y'))
Я хотел бы дать два распределения разные цвета, а также когда они перекрываются. Я знаю, что это возможно в ggplot, но я ищу решение с googleVis, потому что оно лучше работает с Shiny.
Спасибо.
EDIT: Нашел очень громоздким обходной путь:
dfplot <- data.table(x=seq(0,by = .001))
df <- data.table(a=rnorm(n = 400,mean = .1,sd = .01),b=rnorm(n = 400,mean = .13,sd = .01))
dfa <- data.table(x=round(density(df$a)$x,3),y1=density(df$a)$y,var=rep("a",512))
dfb <- data.table(x=round(density(df$b)$x,3),y2=density(df$b)$y,var=rep("b",512))
dfa[duplicated(x),test:=TRUE];dfa<-dfa[is.na(test)]
dfb[duplicated(x),test:=TRUE];dfb<-dfb[is.na(test)]
setkey(dfplot,x);setkey(dfa,x);setkey(dfb,x)
merge <- merge(dfplot,dfa,all.x=T,all.y=F,allow.cartesian=T)
merge <- merge(merge,dfb,all.x=T,all.y=F,allow.cartesian=T)
merge <- merge[,max:=pmax(y1,y2,na.rm=T)]
merge <- merge[!is.na(max)]
merge<-subset(merge,select = c('x','y1','y2'))
plot(gvisAreaChart(merge,xvar = 'x',yvar=c('y1','y2')))
Великий, также выглядит очень хорошо. И интерактивно, как 'googleVis'. –