【发布时间】:2018-10-15 08:24:48
【问题描述】:
我有以下数据框:
structure(list(Z = c("1", "1", "1", "1", "1", "2", "2", "2",
"2", "2", "3", "3", "3", "3", "3", "4", "4", "4", "4", "4"),
Y = c(0.12, 4, 1, 8, 0.25, 4, 0.06, 0.06, 8, 0.5, 0.12, 0.5,
0.06, 8, 16, 0.25, 0.12, 0.25, 4, 8), n = c(20L, 1L, 4L,
6L, 45L, 1L, 4L, 4L, 1L, 16L, 6L, 5L, 3L, 3L, 3L, 28L, 7L,
28L, 1L, 6L), X = c("E", "C", "C", "B", "A", "B", "E", "F",
"F", "A", "D", "F", "E", "B", "B", "B", "F", "E", "B", "D"
), value = c(14, 1, 1, 0, 45, 0, 3, 0, 0, 9, 0, 4, 3, 0,
0, 0, 1, 26, 0, 0)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -20L))
我使用以下代码来创建这两个图:
library(ggplot2)
ggplot(test_data, aes(X, factor(Y), fill = value))+
geom_tile(color = "white")+
facet_wrap(~Z, ncol = 2)+
coord_fixed()
ggplot(test_data, aes(factor(Y), n))+
geom_col()+
facet_wrap(~Z)+
theme(axis.text.y = element_blank(),
axis.title = element_blank(),
axis.ticks.y = element_blank())+
coord_flip()
我想要做的是将每个多面图彼此相邻,并缩短条形图的宽度,如下所示:
我看到ggExtra 包有类似的东西,但只适用于散点图。有没有办法以类似的方式可视化 y 轴上每个类别的数量?
【问题讨论】:
-
我不知道在你试图将不同的类(数值和因子)放在同一尺度上时是否可以使用构面。
-
@PoGibas 不一定要那样做——我只是想创建一个可视化的情节。如果您有任何建议,我很乐意听到!
-
@Haakonkas 听起来您想添加marginal histograms,尽管是平铺热图而不是散点图。是对的吗? (我强烈建议不要在这种情况下使用
facet_wrap,facet_grid(Z ~ .)在保持边缘边缘方面会做得更好)。 -
@Z.Lin 我试过这样做,但它并没有真正给我想要的东西。我只想要右侧的条 - 当我尝试它时,我只得到一个错误:zero_range(range) 中的错误:x 必须是长度 1 或 2