如何使用ggplot或plotly重现使用多个级别在分类Y上绘制数字X的图表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ggplot或plotly重现使用多个级别在分类Y上绘制数字X的图表?相关的知识,希望对你有一定的参考价值。

我想在R中使用ggplot或其他包绘制一个图表,显示分类Y在数字X上的水平。

我很感谢你的帮助,并附上了Akseer et al的示例图,我想要绘制的图形。

Here is sample data to reproduce this Figure.

图A的数据:

Interventions<-c("CPR", "ANC 1+","ANC 4+", "SBA","Caesarian section",
          "Early breastfeeding", "Exclusive breastfeeding at 6 months","BCG", "DTP3",
          "OPV3", "Measles vaccine",
          "Fully immunised", "Vitamin A+", "ORT",
          "Pneumonia care", "Improved water",
          "Sanitation")

Poorest<- (1/5)*(sample(1:100, 17, replace=TRUE))
Poorer<-(2/5)*(sample(1:100, 17, replace=TRUE))
Middle<-(3/5)*(sample(1:100, 17, replace=TRUE))
Richer<-(4/5)*(sample(1:100, 17, replace=TRUE))
Richest<-sample(1:100, 17, replace=TRUE)

mydata_A<-data.frame(Interventions, Poorest,Poorer, Middle, Richer, Richest)
rownames(mydata_A) <- mydata_A[,1]
dtFig3A<- mydata_A[,-1]
答案

以下是第一个图的示例:首先将数据重新排列为长格式,然后使用geom_pointgeom_errorbarh进行实际映射。其余的只是化妆。

library(tidyverse)

dtFig3A %>%
  rownames_to_column() %>% 
  gather(key, value, 2:6) %>% #convert to long format
  mutate(key = factor(key, levels = c("Poorest", #relevel key factor
                                      "Poorer",
                                      "Middle",
                                      "Richer",
                                      "Richest"))) %>%
  group_by(rowname) %>%
  mutate(min = min(value),
         max = max(value)) %>% #calculate min and max in each group for errorbarh
  ggplot()+
  geom_errorbarh(aes(y = rowname,
                     xmin = min,
                     xmax = max,
                     group = key),
                 height = 0) +
  geom_point(aes(y = rowname,
                 x = value,
                 fill = key),
             color = "grey20",
             shape = 21,
             size = 3) +
  theme_classic() +
  theme(legend.position = "top",
        legend.title = element_blank())+
  ylab("Intervention")+
  xlab("Coverage [%]") +
  scale_fill_brewer(type = "seq",
                    palette = 3) 

enter image description here

以上是关于如何使用ggplot或plotly重现使用多个级别在分类Y上绘制数字X的图表?的主要内容,如果未能解决你的问题,请参考以下文章

在 ggplot/ggplotly 中使用 facet_wrap 时如何防止 y 轴挤压标签?

R语言ggplot2可视化:使用plotly包的subplot函数将多个ggplot2可视化结果组合在一起形成组合plotly图(Multiple ggplot2 plots with plotly)

用 plotly 绘制多个 ggplot2 绘图

如何将带有 plotly 的 ggplot 嵌入到 r 闪亮的应用程序或 flexdashboard 中?

安排多个ggplots,但避免由于轴标签而挤压

ggplot2 移动构面布局