r - 使用 ggplot 按组为多个变量创建点图

标签 r ggplot2

我正在尝试为多个变量生成组中位数的水平点图。对于下面的虚拟数据,我希望每个变量(x、y、z、w)都有一条“线”,每条线上绘制七组中位数并按颜色区分。任何帮助表示感谢谢谢!

library(dplyr)
    dat=data.frame(x=runif(100,1,10),y=runif(100,1,5),z=runif(100,1,15),
    w=runif(100,1,20),grp=sample(LETTERS[1:7],100,replace=T))
    dat_summ=dat %>% group_by(grp)%>%
      summarise_all(funs(median(., na.rm = TRUE)))

像这样

x|_______A_____B____C_D__EF_G
y|_______C_D_E_____F__________B____A_G
z|etc.
w|etc.
 |
 |
 |
 |
 |____________________________________________________________________
    |           |            |            |
    5           10           15           20

最佳答案

您可以使用 geom_segment 制作线(找到每组的 max 值到现在的终点,它们都从相同的位置(最小值)开始)。

有点乱,但有真实数据应该会更好看。

library(tidyverse)
data_Let <- gather(dat_summ, wxyz, value, x:w)
data_Seg <- summarise(group_by(data_Let, wxyz), MAX = max(value))

ggplot(data_Let) +
    geom_segment(aes(x = min(data_Let$value),  xend = MAX,
                     y = wxyz, yend = wxyz), data_Seg) +
    geom_point(aes(value, wxyz, color = grp)) +
    geom_text(aes(value, wxyz, label = grp), vjust = -0.5, size = 3) +
    scale_y_discrete(limits = rev(sort(unique(data_Let$wxyz)))) +
    labs(x = "Median")

enter image description here

关于r - 使用 ggplot 按组为多个变量创建点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52024056/

相关文章:

r - 如何在R中的tableGrob输出表中合并垂直单元格?

r - 如何环绕ggplot2中的极坐标限制?

r - 如何从R中的命令行保存直方图

r - 实现并行属性 vctrs 类

r - 使用 ggplot2 绘制样条函数

r - 使用自动绘图显示非默认主成分 (ggfortify)

r - map ,ggplot2,按状态填充缺少 map 上的某些区域

r - 进行热图,水平/等高线图和六边形合并的方法

r - 如何使用 usmap 标记数字而不是名称?

r - 使用 ggplot2 沿 x 轴绘制条形坐标