r ggplot2用geom_rect忽略未知的美学

时间:2018-06-04 21:06:17

标签: r ggplot2

我正在尝试做一个类似下面例子的瀑布情节:

base2 <- data.frame(rot=c("PRini","shk1","PRfim"), value=c(10,5,15),order=c(1,2,3), fim=c(10,15,0), 
                inicio=c(0,10,15), imp=c("net","pos","net"))   
ggplot(base2, aes(fill = imp)) +
geom_rect(aes(x = rot,
              xmin=order - 0.3,
              xmax=order + 0.3, 
              ymin=fim,
              ymax=inicio),
          position="dodge")

当我执行该代码时,我收到以下消息:

Warning: Ignoring unknown aesthetics: x

如果我删除x参数,则会显示以下消息:

Error: position_dodge requires the following missing aesthetics: x

当我删除position参数时,图表会显示,但没有x标签。我想要一些建议,删除保留warning标签的第一个x

提前致谢。

1 个答案:

答案 0 :(得分:1)

将所有美学都放在你的ggplot(aes())中,然后你就不会得到警告。 geom_rect()将从ggplot()获得aes。

    ggplot(base2, aes(fill = imp, x = rot, xmin=order - 0.3,
+                              xmax=order + 0.3, 
+                              ymin=fim,ymax=inicio)) +
+          geom_rect( position="dodge")

另一种解决方案是脏的解决方法: 看来你的情节很好,但它只是给你警告。您还可以使用suppressWarnings()忽略警告。