我想知道如何使用单因素水平作为参考来绘制其他因素。例如,我有以下内容:
set.seed(4)
x <- factor(c('A','B','A','B','A','B','A','B'))
z <- factor(c('a','a','b','b','c','c','d','d'))
y <- runif(8)
df <- data.frame(x,y,z)
p <- ggplot(df, aes(x=x, y=y, fill=z)) +
geom_bar(stat = 'identity', position='dodge')
然而,与上面的情节不同,我想添加一个方面维度:
p+facet_grid(.~z)
但与上述代码不同,只显示c(&#39; a&#39;&#39;&#39;&#39; c&#39;)级别的方面并绘制每个这些反对&#39; d&#39;作为位置参考=&#39;闪避&#39;。
答案 0 :(得分:1)
如果允许,您可以在显示结果之前对数据进行一些转换。这可能很麻烦,但您可以添加一个额外的变量来区分变量z c("a", "b", "c")
和"d"
。然后根据附加变量放置颜色和位置,同时将原始z
变量转换为 facet变量。通过这种方式,您可以从确定颜色和位置的变量中分离确定构面的变量。
library(dplyr)
library(tidyr)
df1 <- df %>% mutate(m = ifelse(z == "d", "d", "abc")) %>%
mutate(z = ifelse(z == "d", "a,b,c", as.character(z))) %>%
mutate(z = strsplit(z, ",")) %>% unnest(z)
p <- ggplot(df1, aes(x=x, y=y, fill=m)) +
geom_bar(stat = 'identity', position='dodge') + facet_grid(. ~ z)