如何将ggplot2的geom_dotplot()与fill和group一起使用

Kri*_*rup 17 r ggplot2

我真的很喜欢ggplot2::geom_dotplot()可以很好地将点堆叠到类别中间的方式,但我似乎无法将其与填充颜色相结合.

让我们来看一个例子:

# test data
tmpData <- data.frame(x=c(rep('x', 3),rep('y', 3)), y=c(1,1,2,1,2,2), fill=rep(c('A', 'B', 'B'), 2))

# Plot without fill color
ggplot(tmpData, aes(x=x, y=y)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

导致这个情节:

没有颜色的Dotplot

但是当我添加fill参数时:

ggplot(tmpData, aes(x=x, y=y, fill=fill)) +   
   geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

填充似乎覆盖了在"x"上完成的分组,导致两个点(x,1)(x,1)被折叠,我希望它们具有不同的颜色.

带有颜色的Dotplot

当我尝试指定组时,忽略填充颜色:

ggplot(tmpData, aes(x=x, y=y, group=x, fill=fill)) +
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

指定组的Dotplot

通过启用堆栈组可以避免崩溃:

ggplot(tmpData, aes(x=x, y=y, fill=fill)) +
    geom_dotplot(binaxis = "y", stackgroups=TRUE, stackdir = "center", dotsize=4)
Run Code Online (Sandbox Code Playgroud)

带有stackgroups的dotpoot

但后来我将数据的中心丢失到了其他3个图中的"x"和"y".

有没有办法使用geom_dotplot()两个组和填充?

jal*_*pic 6

如果您对某个hacky解决方案持开放只是为了获得它想要的样子......您可以通过简单地为其提供颜色名称向量来覆盖填充命令:

tmpData$colorname <- rep(c('red','blue','blue'),2)

ggplot(tmpData, aes(x=x, y=y)) + 
  geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4, fill=tmpData$colorname)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述