我想结合facet_wrap和cord_flip,但是当我这样做时,我会在每个面中重复轴类别.

以下是一些演示数据.

demo_data = data.frame(locus = c(paste0("locus_", rep(1, 5)),
                                 paste0("locus_", rep(2, 5)),
                                 paste0("locus_", rep(3, 5)),
                                 paste0("locus_", rep(4, 5)),
                                 paste0("locus_", rep(5, 5))),
                       sample = rep(paste0("sample_", seq(1:5))),
                       value = sample(100, 25)) %>%
  mutate(ci_upper = value + 10,
         ci_lower = value - 10)

当我绘制它时,原始x轴上的值是sample_1到sample_5.当我翻转坐标时,样本1 -5在每个方面都是重复的,这使得图看起来太混乱了.我希望它们只出现在左边的面中,就像facet_wrap通常发生的那样.

ggplot(demo_data, aes(x = sample, y = value)) +
  geom_point() +
  geom_errorbar(aes(ymin = ci_lower, 
                    ymax = ci_upper)) +
  facet_wrap(~ locus, scales = "free") +
  coord_flip()

enter image description here

有什么办法可以做到这一点吗?

我试着在这里搜索,但找不到任何相关的东西

推荐答案

这个问题是,您已经将x和y标尺都标记为"自由",因此它们在每个框中可以有不同的值.如果需要共享轴,则需要非自由比例.因此,将scales="free"更改为scales="free_x",这样只有x轴是自由的.try

ggplot(demo_data, aes(x = sample, y = value)) +
  geom_point() +
  geom_errorbar(aes(ymin = ci_lower, 
                    ymax = ci_upper)) +
  facet_wrap(~ locus, scales = "free_x") + 
  coord_flip()

enter image description here

R相关问答推荐

创建重复删除的唯一数据集组合列表

使用lapply的重新定位功能

以R为基数排列奇数个图

按R中的组查找相邻列的行累积和的最大值

在使用ggroove后,将图例合并在gplot中

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

单个轮廓重叠条的单独图例

如何在R中合并两个基准点?

用两种 colored颜色 填充方框图

按时间顺序对不同事件进行分组

派生程序包| ;无法检索';return()';的正文

使用R将简单的JSON解析为嵌套框架

有没有办法一次粘贴所有列

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

在ggplot2上从多个数据框创建复杂的自定义图形

在鼠标悬停时使用Plotly更改geom_point大小

如何用不同长度的向量填充列表?

在GT()中的列之间添加空格

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?