Geom_point,每个变量具有多个观察值:如何躲避位置和更改颜色(ggplot2)

时间:2019-01-30 13:59:41

标签: r ggplot2

我正在尝试使用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)。我希望他们彼此之间。

1 个答案:

答案 0 :(得分:2)

这是我要接近您理想输出的方法。

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()

enter image description here

我切换为垂直构建图,它们通过coord_flip()翻转轴的末端,因为position_dodge()仅允许您在“宽度”上躲避。 position = "dodge"的某些功能确实适用于某些几何图形,但不能像完整功能那样对微调量进行微调控制。让我知道您是否遇到任何困难。