我想在一组刻面网格盒形图的每一行上添加一条唯一的水平线.

x<-c("species_X","species_X","species_X", "species_Y","species_Y",
     "species_Y", "species_Z", "species_Z", "species_Z") 
y<- c(1,2,3)


df<- data.frame(species= rep(x, 3),
                effort= rep(y, 9),
                value = rnorm(27, 3, 2))
 
ggplot(df, aes(x=value))+
  geom_boxplot()+
  facet_grid(species ~ effort, scales = "free_y")+
  coord_flip()+
  ylab("")

我想为每行添加以下值的行:

add_lines<- c(4, 3, 4.7)

因此,4对应于物种_X,3对应于物种_Y,4.7对应于物种_Z.我已经能够向所有箱线图中添加线条,但只能以所有线条都具有相同值的方式,或者在每个箱线图上显示所有三条线条,如下所示:

ggplot(df, aes(x=value))+
  geom_boxplot()+
  facet_grid(species ~ effort, scales = "free_y")+
  coord_flip()+
  ylab("")+
  geom_vline(xintercept = add_lines)

如果您有任何帮助,我们将不胜感激.

推荐答案

  1. coord_flip会干扰线的方向,但改为geom_vline会修复它.

  2. 将物种设置为unique,并确保数据框中的行数安全.

library(tidyverse)

# data for lines
add_lines = data.frame(species = unique(df$species),
                       hline = c(4,3,4.7)
                       )

p <- ggplot(df, aes(x=value))+
  geom_boxplot()+
  facet_grid(species ~ effort, scales = "free_y")+
  coord_flip()+
  ylab("")

p + 
  geom_vline(data = add_lines,
             aes(xintercept = hline), color = "green")

enter image description here

R相关问答推荐

如何在所有绘图中保持条件值的 colored颜色 相同?

R中插入符号训练函数的中心因子和尺度因子预测

R—将各种CSV数字列转换为日期

合并DFS列表并将索引提取为新列

Data.table';S GForce-将多个函数应用于多列(带可选参数)

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

创建在文本字符串中发现两个不同关键字的实例的数据框

按组跨多列创建伪变量

快速合并R内的值

对R中的列表列执行ROW Mean操作

用满足特定列匹配的另一行替换NA行

如何在R中使用因子行求和?

从字符串01JAN2021创建日期

从data.table列表中提取特定组值,并在R中作为向量返回

向量化sApply函数

从R中的字符中提取整数

ggplot2标记位置未居中

错误:由错误引起:!`DEPGDS_FIRST`的大小必须为9或1,而不是0

如何根据R中ggplot2中的离散y轴标签更改面板的背景 colored颜色 ?

如何将嵌入的情节设计为伪迷你图?