geom_dumbbell图不继承aes

时间:2018-08-27 15:48:49

标签: r ggplot2

我正在尝试在ggplot中建立哑铃图(geom_dumbbell)。该图构建良好,但是当我尝试在点颜色和大小周围添加详细信息时,该图无法继承aes并喷出:

  

错误:mapping必须由aes()创建

以下是生成可重现示例的代码:

test <- data.frame(Scenario = rep(c("LC-HD", "HC-HD", "LC-LD", "HC-LD"), times = 2),  
           technology = c("P", "W", "P", "W", "P", "W", "P", "W"),
           country = paste("country", rep(seq(1, 4, by = 1), times = 2)), 
           low = runif(8, min = 1, max = 3), 
           high = runif(8, min = 4, max = 6))

以下代码运行良好:

library(ggplot2)
library(ggalt)
ggplot(test, aes(x = low, xend = high, y = country, group = country)) + 
  geom_dumbbell(color="grey", 
                size = 1) + 
  facet_grid(technology ~ Scenario) +
  coord_flip() + 
  theme(axis.text.x = element_text(angle = 90)) 

但是,当我对geom_dumbbell图层进行以下更改(设置点的颜色和大小)时:

library(devtools)
library(ggplot2)
library(ggalt)
ggplot(test, aes(x = low, xend = high, y = country, group = country)) + 
  geom_dumbbell(color="grey", 
                size = 1, 
                point.size.l = 1.5, point.size.r = 1,5, 
                point.colour.l = "#58d9ef", point.colour.r = "#a3c4dc") +
  facet_grid(technology ~ Scenario) +
  coord_flip() + 
  theme(axis.text.x = element_text(angle = 90))

我得到了错误:

  

错误:mapping必须由aes()创建

即使我尝试在geom_bumbbell层中显式设置Inherit.aes = T,我仍然会收到错误消息。

问题似乎出在point.size参数上,因为添加该参数会导致错误。当我只添加point.colour参数时,我得到:

  

警告:忽略未知参数:point.color.l,point.color.r

这很奇怪,因为这些是文档中描述的参数:https://www.rdocumentation.org/packages/SciencesPo/versions/1.4.1/topics/geom_dumbbell

我正在运行ggalt_0.6.1(将加载geom_dumbbell)

我在这里想念什么。为什么在这些点上添加细节会改变aes的继承方式,为什么不能识别point.colour参数?

1 个答案:

答案 0 :(得分:1)

解决了这个问题。

  

错误:映射必须由aes()创建

是由point.size.r中的逗号引起的。

  

警告:忽略未知参数:point.color.l,point.color.r

是由于使用了错误的名称引起的。

应为:

point.size.l = size_x
point.size.r = size_xend
point.color.l = colour_x
point.color.r = colour_xend

解决方案在这里:Ignoring unknown parameters: point.colour.1

对令人困惑的问题标题的道歉。我不确定如何编辑文档:https://www.rdocumentation.org/packages/SciencesPo/versions/1.4.1/topics/geom_dumbbell