在小提琴情节中绘制空组
Plot empty groups in violin plot
我想比较一些小提琴图。但是我 运行 遇到了一个问题,即组为空的情况:我想要绘制一个空槽,以便更容易比较多个图。
假设我有一个数据框:
df = data.frame("x"=rep(c(1:4), 3), y=rep(c(1:4), each=3))
df$y[df$x==3] = NA
所以第 3 组全部为 NA,我使用 vioplot 绘制它:
library(vioplot)
vioplot(y ~ x , df)
然后我得到了没有组 3 的图。有没有办法我可以绘制所有组 1:4 但 3 只是空的?
谢谢
对于图表,你能把 NA 改成 0 吗?例如
df <- df %>%
zoo::na.fill(0)
vioplot(y ~ x , df, ylim = c(1, 4))
或者,使用 ggplot
...
df %>% ggplot() + geom_violin(aes(x=as.factor(x), y=y))
给予
也是
df %>% ggplot() + geom_violin(aes(x, y=y, group=x))
我使用 at
参数找到了针对我的特定问题的变通解决方案:
df = data.frame("x"=rep(c(1:4), 3), y=rep(c(1:4), each=3))
df$y[df$x==3] = NA
library(vioplot)
vioplot(y ~ x , df, at=unique(df$x[! is.na(df$y)]), xaxt="n")
axis(1, at=unique(df$x))
我想比较一些小提琴图。但是我 运行 遇到了一个问题,即组为空的情况:我想要绘制一个空槽,以便更容易比较多个图。
假设我有一个数据框:
df = data.frame("x"=rep(c(1:4), 3), y=rep(c(1:4), each=3))
df$y[df$x==3] = NA
所以第 3 组全部为 NA,我使用 vioplot 绘制它:
library(vioplot)
vioplot(y ~ x , df)
然后我得到了没有组 3 的图。有没有办法我可以绘制所有组 1:4 但 3 只是空的?
谢谢
对于图表,你能把 NA 改成 0 吗?例如
df <- df %>%
zoo::na.fill(0)
vioplot(y ~ x , df, ylim = c(1, 4))
或者,使用 ggplot
...
df %>% ggplot() + geom_violin(aes(x=as.factor(x), y=y))
给予
也是
df %>% ggplot() + geom_violin(aes(x, y=y, group=x))
我使用 at
参数找到了针对我的特定问题的变通解决方案:
df = data.frame("x"=rep(c(1:4), 3), y=rep(c(1:4), each=3))
df$y[df$x==3] = NA
library(vioplot)
vioplot(y ~ x , df, at=unique(df$x[! is.na(df$y)]), xaxt="n")
axis(1, at=unique(df$x))