【问题标题】:How to draw lines at each panel divided by facet_wrap() in R?如何在 R 中除以 facet_wrap() 的每个面板上画线?
【发布时间】:2022-11-03 00:58:43
【问题描述】:

这是一个数据

variety<- c("CV1","CV1")
trt<- c("N0","N1")
yield<- c(100,150)
dataA<- data.frame(variety,yield,trt)

我用facet_wrap() 做了一个图表并画了线。

ggplot(data=dataA, aes(x=variety, y=yield))+
  geom_bar(stat="identity", position="dodge", width=0.7, size=1) +
  coord_flip() +
  facet_wrap(~ trt) +
  geom_hline(yintercept=100, linetype = "dashed", color="Dark blue") +
  geom_hline(yintercept=150, linetype = "dashed", color="Dark blue") +
  windows(width=10, height=6)

当我画两条线时,它在每个面板上都重复了。我想在每个面板上画一条线,如下所示。

你能告诉我这件事吗?

总是非常感谢

【问题讨论】:

    标签: r facet-wrap geom-hline


    【解决方案1】:

    使用aes在美学中添加yintercept

    ggplot(data=dataA, aes(x=variety, y=yield))+
      geom_bar(stat="identity", position="dodge", width=0.7, size=1) +
      coord_flip() +
      facet_wrap(~ trt) +
      geom_hline(aes(yintercept = c(100, 150)), linetype = "dashed", color="Dark blue")
    

    【讨论】:

    • 太感谢了!!在不同的位置绘图怎么样?例如,左侧面板为 120,右侧面板为 140?我怎样才能做到这一点?
    • 然后我想最好的方法是创建一个向量并将其添加到您的数据框中,就像这里使用 yield 所做的那样
    • 我认为添加一个新框架是有必要的,也许是geom_hline(..., data=data.frame(trt = c("N0","N1","N1"), yint = c(100, 150, 160)))(我添加了 160 只是为了演示每个方面多个 hlines 的应用)。此外,新框架不需要像这样就地定义,可能在绘图表达式之前。
    • 谢谢你们的cmets!!如果我这样做,geom_hline(aes(yintercept=c(120,140)), linetype = "dashed", color="Dark blue"),效果很好。
    猜你喜欢
    • 2012-03-03
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多