r - 将 position_dodge 与 geom_pointrange 一起使用

标签 r ggplot2

我正在尝试使用 ggplot、geom_poitrange 绘制图形。我有两组,每组有两个点和相应的错误值。我使用的代码如下:

    group<-c("A","A","B","B")
    val<-c(1.3,1.4, 1.2,1.5)
    SD<-c(0.3,0.8,0.6,0.5)
    RX<-c("X","Z","X","Z")

    a<-data.frame(group,val,SD,RX)
    ggplot(data=a)+
    geom_pointrange(aes(x=RX, y=val, ymin=(val-SD), ymax=(val + SD), 
    group=group, color=group, position_dodge(width=4)), size=1.5)

有了这个,我得到了一个很好的图表,但组重叠。
enter image description here

我想抵消它们。我尝试了以下方法:
    geom_pointrange(aes(x=RX, y=val, ymin=(val-SD), ymax=(val + SD), 
    group=group, color=group, position_dodge(width=1)), size=1.5)

或者
    geom_pointrange(aes(x=RX, y=val, ymin=(val-SD), ymax=(val + SD), 
    group=group, color=group, position="dodge"), size=1.5)

和上述的变体。
谁能建议我做错了什么?
谢谢

最佳答案

OP 提供了两种可能的解决方案。第一个解决方案使用 position_dodge()功能,这是接近的。问题是它在参数列表中的位置错误(不是因为宽度太大)。

明确指定 position = position_dodge(width = 1)aes()

ggplot(data=a) +     
geom_pointrange(aes(x=RX, y=val, ymin=(val-SD), max=(val + SD), 
                                       group=group, color=group), 
position = position_dodge(width = 1), size=1.5)

在帮助中检查 API ?geom_pointrange() ,您会看到位置在映射、数据和统计之后。如上所示,这里最简单的事情是明确的。否则,您将收到如下错误或警告:
Warning: Ignoring unknown aesthetics 

或者
Error: `data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class PositionDodge/Position/ggproto/gg

为什么不position="dodge" ?

如果您尝试第二种解决方案,您将收到一条警告,告诉您尝试第一种解决方案:
Warning message:
Width not defined. Set with `position_dodge(width = ?)` 

据我所知,躲避是为条形图和箱形图编写的,并使用 width这些对象所固有的。线条没有宽度,因此您需要明确指定应该发生多少闪避。

关于r - 将 position_dodge 与 geom_pointrange 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43956574/

相关文章:

R:使用3D数组(纬度,经度和时间)随时间推移计算​​函数的最佳方法是哪种?

r - 如何在 R 热图中为连续颜色条设置特定颜色?

r - R 中系数的可视化(点图)

r - 如何在 R 中使用 ggplot 绘制绘图区域的 'outside'?

r - 将仅出现一次的值分组到其他字段中

r - 使用 ggplot2 绘制气泡图

r - 在 ggplot2 中创建条形图,描述数据集多列中特定值的计数

mysql - 无法使用 RMySQL 插入 chr 数据类型列

r - 如何使用purrr循环一个整齐的评估函数?

r - 将彩色箭头添加到ggplot2的轴(部分在绘图区域之外)