【问题标题】:Geom_point with several observations per variable: How to dodge position and change colours (ggplot2)Geom_point 每个变量有几个观察值:如何躲避位置和更改颜色(ggplot2)
【发布时间】:2019-06-23 20:03:55
【问题描述】:

我正在尝试使用 ggplot2 在 R 中创建系数图。因为我已经计算了数据,所以我使用 geom_point 和 geom_errorbarh。由于我想为每个变量包含两个模型/组,因此我试图将系数和区间放在彼此下方并更改它们的颜色。不幸的是,我没有弄清楚这两种方法是如何工作的。

我知道我应该使用 colour=... 或 scale_colour_manual(values=...) 之类的东西,但随后我收到错误消息“错误:美学必须是长度 1 或与数据相同” .

为了躲避,我已经尝试过 geom_point(position=dodge) 但 R 似乎不再知道这个命令了。

example<-data.frame(group=c("group1", "group2", "group1", "group2"),
                variable=c("variable1", "variable1", "variable2", "variable2"),
                value=c(0.4, 0.2, 0.3, 0.2),
                min=c(0.3, 0.1, 0.2, 0.1),
                max=c(0.5, 0.3, 0.4, 0.3))

groupcolor<-c("group1"="red", "group2"="purple")

ggplot(example, aes(x=value, y=variable))+
     theme_bw()+
     scale_x_continuous(breaks=seq(0.0,0.6,0.2), limits=c(0.0, 0.6))+
     geom_point(size=2)+
     scale_colour_manual(values=groupcolor)+
     geom_errorbarh(mapping=aes(xmin=min, xmax=max), height=0.1)

这是我正在使用的代码。我想要一个带有 y 轴上的两个变量的图,x 轴上的系数及其间隔,对于每个变量,我想要两个系数:一个是红色的(group1),一个是紫色的(group2)。我希望他们在彼此之下。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    这就是我会做的以接近你的理想输出。

    dodge <- .5 # for consistancy between layers
    
    ggplot(example, aes(x = variable, y = value, color = group)) +
      geom_point(size=2,
                 position = position_dodge(width = dodge)) +
      geom_errorbar(aes(ymin = min, ymax = max), width = 0.1,
                     position = position_dodge(width = dodge)) +
      scale_colour_manual(values=groupcolor) +
      scale_y_continuous(breaks=seq(0.0,0.6,0.2), limits=c(0.0, 0.6)) +
      coord_flip() +
      theme_bw()
    

    我通过coord_flip() 切换到垂直构建绘图,它们在最后翻转轴,因为position_dodge() 只允许您躲避“宽度”。关于position = "dodge" 的内容确实适用于某些几何图形,但不会像完整功能那样为您提供对躲避量的微调控制。如果您遇到任何问题,请告诉我。

    【讨论】:

    • 非常感谢!这完美地工作。我不知道不可能躲避“高度”。而且颜色现在也可以了!
    • 颜色起作用了,因为现在你告诉 ggplot 你希望它从数据中映射到 aes(..., color = group) 一旦它知道了这一点,它就会注意你指定的比例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2020-01-30
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多