在ggplot2中的散点图中添加一条水平线

Posted

技术标签:

【中文标题】在ggplot2中的散点图中添加一条水平线【英文标题】:Adding a horizontal line to a scatterplot in ggplot2 【发布时间】:2019-08-15 04:57:57 【问题描述】:

从这里开始 How to add the results of applying a function to an existing data frame?

library (tidyverse)
library (epitools)


# here's my made up data

DISEASE = c("Marco Polio","Marco Polio","Marco Polio","Marco Polio","Marco Polio",
            "Mumps","Mumps","Mumps","Mumps","Mumps",
            "Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox")
YEAR = c(2011, 2012, 2013, 2014, 2015,
         2011, 2012, 2013, 2014, 2015,
         2011, 2012, 2013, 2014, 2015)
VALUE = c(82,89,79,51,51,
          79,91,69,89,78,
          71,69,95,61,87)
AREA =c("A", "B","C")

DATA = data.frame(DISEASE, YEAR, VALUE,AREA)


DATA %>%
    mutate(POPN = case_when(
        AREA == "A" ~ 2.5,
        AREA == "B" ~ 3,
        AREA == "C" ~ 7,
        TRUE ~ 0)) %>%
    group_by(DISEASE,AREA,POPN) %>%
    count(AREA) %>%
    mutate(res = list(pois.byar(n, POPN))) %>%
    unnest()

给我我需要的东西。

我想做的是将其绘制在散点图上,水平线等于我计算的比率之一。而不是手动添加。

我认为这可能有效

DATA%>%filter(DISEASE== "Chicky Pox")%>%
  ggplot(aes(x=AREA, y=rate)) +geom_point() +
  geom_hline(yintercept=20, linetype="dashed", color = "red")

它的作用。 它在 20 处给了我一条线。 但是我怎样才能让它给我一条等于区域 A 的速率值的线(例如)。 这样您就可以快速查看哪些费率高于或低于 A 的费率。

再次。抱歉,这很简单。不过来晚了……

【问题讨论】:

【参考方案1】:

您可以在aes() 中放置一些简单的子集条件,这意味着只要条件不太复杂,这非常简单:

DATA %>%
    filter(DISEASE== "Chicky Pox") %>%
    ggplot(aes(x=AREA, y=rate)) +
    geom_point() +
    geom_hline(aes(yintercept=rate[AREA == "A"]), 
               linetype="dashed", color = "red")

【讨论】:

再次感谢!这又是一个“轰轰烈烈”的时刻。

以上是关于在ggplot2中的散点图中添加一条水平线的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:ggplot2可视化分组散点图并使用geom_smooth函数在散点图图中为不同的散点簇添加对应的回归曲线

R语言ggplot2可视化:ggplot2可视化分组散点图并使用geom_smooth函数在散点图图中为不同的散点簇添加对应的回归曲线并使用se参数设置拟合回归线的置信区间

带有 ggplot2 的散点图按 r 中的特定日期间隔着色

带有误差条的散点图

R语言ggplot2可视化散点图实战:绘制基础散点图为所有散点添加标签只为大于阈值的散点添加标签

R语言使用ggplot2绘制带有边缘直方图的散点图实战