繁体   English   中英

将具有特定 df 值的行添加到 ggplot 中的每个条形图

[英]Adding line with specific df value to each bar in ggplot

例如,我的 df 是这样组织的:

OCCURED_COUNTRY_DESC | a | b  | c | d  | flagged | type | MedDRA_PT| **E** |
__________________________________________________________________________
UNITED STATES        |403|1243|473|4077|   yes   | disp |  Seizure |144.208|
__________________________________________________________________________

我的数据:

 structure(list(OCCURED_COUNTRY_DESC = c("AUSTRALIA", "AUSTRIA", 
"BELGIUM", "BRAZIL", "CANADA"), a = c(4L, 7L, 20L, 5L, 11L), 
    b = c(31, 27, 100, 51, 125), c = c(872, 869, 856, 871, 865
    ), d = c(5289, 5293, 5220, 5269, 5195), w = c(876, 876, 876, 
    876, 876), x = c(5320, 5320, 5320, 5320, 5320), y = c(35L, 
    34L, 120L, 56L, 136L), z = c(6161, 6162, 6076, 6140, 6060
    ), N = c(6196, 6196, 6196, 6196, 6196), k = c("0.5", "0.5", 
    "0.5", "0.5", "0.5"), SOR = c(0.80199821407511, 1.52042360060514, 
    1.21312776329214, 0.615857869962066, 0.539569644832803), 
    log = c(-0.318329070860348, 0.604473324558599, 0.278731499148795, 
    -0.699330656240263, -0.890118907611227), LL99 = c(-0.695969674426877, 
    0.382102954188229, 0.198127619344382, -1.00534117464748, 
    -1.03425468471322), UL99 = c(-0.0544058884186467, 0.763880731966007, 
    0.337239065783058, -0.482651467660248, -0.785935460582379
    ), flagged = c("no", "no", "no", "no", "yes"), type = c(NA, 
    NA, NA, NA, "under"), MedDRA_PT = c("Seizure", "Seizure", 
    "Seizure", "Seizure", "Seizure"), E = c(5.11098506333901, 
    4.43283582089552, 16.3984674329502, 8.43063199848168, 20.8132820019249
    )), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"
))

我正在使用 ggplot2 使用以下代码创建条形图:

test2 %>% #using test2 as the df
  ggplot(aes(a, OCCURED_COUNTRY_DESC, fill=type)) +
  geom_bar(stat="identity")+
  scale_fill_manual(values = c("disp" = "#FF8C00",
                                "under" = "#7EC0EE",
                                "NA"="#EEE9E9"))+
  theme_classic()+
  labs(title = "Seizure",
       x = "Count",
       y = "")

我想做的是在对应于该国家/地区 dataframe 的E值的每个条形图中添加一条黑线。 但是我没有成功。 有人可以指导我如何实现这一目标吗?

在此处输入图像描述

谢谢!

实现所需结果的一种选择是通过geom_segment ,其中 map 您在xxend position 上的E列。“棘手”部分是y位置。 但是,由于分类轴仍然是数字轴,我们可以向您的数据添加一个辅助列,其中包含您的分类OCCURED_COUNTRY_DESC列的数字位置。 然后可以将此辅助列映射到geom_segment所需的yyend aes 上,其中我们还考虑了条的宽度:

library(ggplot2)

test2$OCCURED_COUNTRY_DESC_num <- as.numeric(factor(test2$OCCURED_COUNTRY_DESC))
width <- .9 # defautlt width of bars

ggplot(test2, aes(a, OCCURED_COUNTRY_DESC, fill = type)) +
  geom_bar(stat = "identity") +
  geom_segment(aes(x = E, xend = E, 
                   y = OCCURED_COUNTRY_DESC_num - width / 2, 
                   yend = OCCURED_COUNTRY_DESC_num + width / 2), 
               color = "black", size = 1) +
  scale_fill_manual(values = c(
    "disp" = "#FF8C00",
    "under" = "#7EC0EE",
    "NA" = "#EEE9E9"
  )) +
  theme_classic() +
  labs(
    title = "Seizure",
    x = "Count",
    y = ""
  )

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM