我想在箱图中显示所有可能的因素组合,即使它们未出现在数据中也是如此。但是ggplot会不断从数据中删除缺失值,因此会删除相应的框。有什么方法/黑客可以阻止这种情况吗?
例如,即使所有值均为NA,我都需要对所有组显示“ e”?顺便说一句,我不想用其他任何值替换NA。
set.seed(666)
dat <- data.frame(matrix(runif(60,1,20),ncol=6))
names(dat) <- letters[1:6]
longdat <- melt(dat,measure.vars=c('b','c','d','e','f'))
longdat$a <- 'a'
longdat2 <- longdat
longdat2$a <- 'xa'
longdat2$value[longdat2$variable=='e'] <- NA
longdat <- rbind(longdat,longdat2)
library(ggplot2)
ggplot(longdat, aes(x=variable, y=value, group=interaction(a,variable))) +
geom_boxplot(aes(colour = variable), position=position_dodge2(width=0.8,preserve='single'),na.rm=T)
答案 0 :(得分:1)
我更改了dat[,5] <- NA
并融化后得到longdat
中的“ e”因子,还制作了第二个数据帧,并用NA
更改了zero
并使用了它,并用白色更改了“ e”的颜色。
set.seed(666)
dat <- data.frame(matrix(runif(60,1,20),ncol=6))
names(dat) <- letters[1:6]
library(reshape2)
longdat <- melt(dat)
longdat <- longdat %>% mutate(value = ifelse(variable == "e",NA,value))
longdat2 <- longdat %>% mutate(value = ifelse(variable == "e",0,value))
library(ggplot2)
ggplot() + geom_boxplot(data = longdat2,aes(x=variable, y=value,colour = variable),na.rm = F) +
scale_colour_manual(name = "Hello",
labels = c("a","b","c","d","e","f"),values = c("green","red","black","blue","white","yellow"))
答案 1 :(得分:0)
e
数据集使用melt
作为索引变量。运行此代码时,您可能会看到“使用e作为id变量”。向数据集添加索引变量(可以是任何行-row_number(),可以是数字,无论什么),然后告诉melt将其用作索引将解决您的问题。
set.seed(666)
dat <- data.frame(matrix(runif(60,1,20),ncol=6))
names(dat) <- letters[1:6]
dat[,5] <- NA
dat <- dat %>% mutate(index = row_number())
library(reshape2)
longdat <- melt(dat, id.vars = 'index')
library(ggplot2)
ggplot(longdat, aes(x=variable, y=value)) + geom_boxplot(aes(colour = variable))