Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r-ggplot2-两组以上的分割小提琴图_R_Ggplot2 - Fatal编程技术网

r-ggplot2-两组以上的分割小提琴图

r-ggplot2-两组以上的分割小提琴图,r,ggplot2,R,Ggplot2,从停止的地方继续 我想在ggplot 2中制作一个分裂的小提琴情节。上述方法仅限于x轴上的两个类别 例如: set.seed(20160229) my_data = data.frame( y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5)), x=c(rep('a', 2000), rep('b', 2000)), m=c(rep('i', 1000), rep('j', 2000), rep('i', 100

从停止的地方继续

我想在ggplot 2中制作一个分裂的小提琴情节。上述方法仅限于x轴上的两个类别

例如:

set.seed(20160229)
my_data = data.frame(
y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5)),
x=c(rep('a', 2000), rep('b', 2000)),
m=c(rep('i', 1000), rep('j', 2000), rep('i', 1000)))

#Get densities
library(dplyr)
pdat <- my_data %>%
group_by(x, m) %>%
do(data.frame(loc = density(.$y)$x,
            dens = density(.$y)$y))

#Flip and offset densities for the groups
pdat$dens <- ifelse(pdat$m == 'i', pdat$dens * -1, pdat$dens)
pdat$dens <- ifelse(pdat$x == 'b', pdat$dens + 1, pdat$dens)
Plot

ggplot(pdat, aes(dens, loc, fill = m, group = interaction(m, x))) + 
geom_polygon() +
  scale_x_continuous(breaks = 0:1, labels = c('a', 'b')) +
  ylab('density') +
  theme_minimal() +
  theme(axis.title.x = element_blank())
set.seed(20160229)
my_data=data.frame(
y=c(rnorm(1000),rnorm(1000,0.5),rnorm(1000,1),rnorm(1000,1.5)),
x=c(代表('a',2000),代表('b',2000)),
m=c(代表('i',1000),代表('j',2000),代表('i',1000)))
#获取密度
图书馆(dplyr)
pdat%
(x,m)%>%
do(数据帧(loc=密度(.$y)$x,
密度=密度(.$y)$y))
#组的翻转和偏移密度

pdat$dens我使用for循环按组因子级别定位形状

 set.seed(20160229)
my_data = data.frame(
y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5), rnorm(1000, 1.25), rnorm(1000, 0.75)),
x=c(rep('a', 2000), rep('b', 2000), rep('c', 2000)),
m=c(rep('i', 1000), rep('j', 1000), rep('i', 1000,rep('j', 1000), rep('i', 1000,rep('j', 1000), rep('i', 1000)))

#Get densities
library(dplyr)
pdat <- my_data %>%
group_by(x, m) %>%
do(data.frame(loc = density(.$y)$x,
            dens = density(.$y)$y))

#Flip and offset densities for the groups
pdat$dens <- ifelse(pdat$m == 'i', pdat$dens * -1, pdat$dens)

#Flip and offset densities for x
    #for(pdat$x){pdat$dens <- (pdat$dens + (as.numeric(as.factor(pdat$x))))}
    for(i in 1:nrow(pdat)){(pdat$dens[i] <- (pdat$dens[i] + as.numeric(as.factor(pdat$x[i]))))}


    #Plot
    library(ggplot2)
    ggplot(pdat, aes(dens, loc, fill = m, group = interaction(m, x))) + 
      geom_polygon() +
      scale_x_continuous(breaks = (1:(as.numeric(length(levels(unique(pdat$x)))))), labels = levels(pdat$x)) +

      #scale_x_continuous(breaks = length(pdat$x), labels=pdat$x)+
      ylab("y") +
      theme_minimal() +
      theme(axis.title.x = element_blank())
set.seed(20160229)
my_data=data.frame(
y=c(rnorm(1000),rnorm(1000,0.5),rnorm(1000,1),rnorm(1000,1.5),rnorm(1000,1.25),rnorm(1000,0.75)),
x=c(代表('a',2000),代表('b',2000),代表('c',2000)),
m=c(代表('i',1000),代表('j',1000),代表('i',1000,代表('j',1000),代表('i',1000,代表('j',1000),代表('i',1000)))
#获取密度
图书馆(dplyr)
pdat%
(x,m)%>%
do(数据帧(loc=密度(.$y)$x,
密度=密度(.$y)$y))
#组的翻转和偏移密度

pdat$dens我使用for循环按组因子级别定位形状

 set.seed(20160229)
my_data = data.frame(
y=c(rnorm(1000), rnorm(1000, 0.5), rnorm(1000, 1), rnorm(1000, 1.5), rnorm(1000, 1.25), rnorm(1000, 0.75)),
x=c(rep('a', 2000), rep('b', 2000), rep('c', 2000)),
m=c(rep('i', 1000), rep('j', 1000), rep('i', 1000,rep('j', 1000), rep('i', 1000,rep('j', 1000), rep('i', 1000)))

#Get densities
library(dplyr)
pdat <- my_data %>%
group_by(x, m) %>%
do(data.frame(loc = density(.$y)$x,
            dens = density(.$y)$y))

#Flip and offset densities for the groups
pdat$dens <- ifelse(pdat$m == 'i', pdat$dens * -1, pdat$dens)

#Flip and offset densities for x
    #for(pdat$x){pdat$dens <- (pdat$dens + (as.numeric(as.factor(pdat$x))))}
    for(i in 1:nrow(pdat)){(pdat$dens[i] <- (pdat$dens[i] + as.numeric(as.factor(pdat$x[i]))))}


    #Plot
    library(ggplot2)
    ggplot(pdat, aes(dens, loc, fill = m, group = interaction(m, x))) + 
      geom_polygon() +
      scale_x_continuous(breaks = (1:(as.numeric(length(levels(unique(pdat$x)))))), labels = levels(pdat$x)) +

      #scale_x_continuous(breaks = length(pdat$x), labels=pdat$x)+
      ylab("y") +
      theme_minimal() +
      theme(axis.title.x = element_blank())
set.seed(20160229)
my_data=data.frame(
y=c(rnorm(1000),rnorm(1000,0.5),rnorm(1000,1),rnorm(1000,1.5),rnorm(1000,1.25),rnorm(1000,0.75)),
x=c(代表('a',2000),代表('b',2000),代表('c',2000)),
m=c(代表('i',1000),代表('j',1000),代表('i',1000,代表('j',1000),代表('i',1000,代表('j',1000),代表('i',1000)))
#获取密度
图书馆(dplyr)
pdat%
(x,m)%>%
do(数据帧(loc=密度(.$y)$x,
密度=密度(.$y)$y))
#组的翻转和偏移密度

pdat$dens我想不需要
for
循环,只要
pdat$dens我想不需要
for
循环,只要
pdat$dens