ggplot2错误:提供给连续比例的离散值

nan*_*nan 14 r ggplot2

我有一个名为"merged"的数据集,其中包含3个数字列"pauseMedian"和"numTotalPauses"和"diff".我还有一个splineHull数据集,它还包含数字列"pauseMedian"和"numTotalPauses",以及一个6级因子"microstyle"

我有以下代码,它完美地运行.它绘制一个散点图,然后用splineHull多边形覆盖它,根据"microstyle"颜色.

脚本1:

ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses)) 
       + geom_point()  
       + geom_polygon(data = splineHull, 
                      mapping=aes(x=pauseMedian, 
                                  y=numTotalPauses, 
                                  group=microstyle, 
                                  color = microstyle),
                       alpha=0)
Run Code Online (Sandbox Code Playgroud)

然后,我还想通过添加一个属性color = diff来更改散点图中点的颜色.

脚本2:

ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
       + geom_point()  
       + geom_polygon(data = splineHull, 
                      mapping=aes(x=pauseMedian, 
                                  y=numTotalPauses, 
                                  group=microstyle, 
                                  color = microstyle),
                       alpha=0)
Run Code Online (Sandbox Code Playgroud)

我看到以下错误:

Error: Discrete value supplied to continuous scale
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我会看到这个错误.如果我仍然想要彩色散点图但没有多边形,我运行以下代码再次工作.

脚本3:

ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
       + geom_point()  
Run Code Online (Sandbox Code Playgroud)

那么,脚本2发生了什么,错误来自何处,以及如何使其工作?

eip*_*i10 17

显然,对于两种不同的宝石,你不可能有不同的颜色美学.作为解决方法,请使用填充美学来代替点.这意味着您必须使用具有填充内部的点标记样式(请参阅?pch并向下滚动以查看可用的点样式).这是一种方法:

ggplot() + 
  geom_point(data=merged,aes(x = pauseMedian, y = numTotalPauses, fill = diff),
             pch=21, size=5, colour=NA) +
  geom_polygon(data = splineHull, 
               mapping=aes(x=pauseMedian, 
                           y=numTotalPauses, 
                           colour = microstyle),
               alpha=0) 
Run Code Online (Sandbox Code Playgroud)

添加colour=NA(在...之外aes()),摆脱点标记周围的默认黑色边框.如果你想要点周围的彩色边框,只需改变colour=NA你喜欢的颜色.

也看到这个线程ggplot2谷歌组,讨论类似的问题和一些解决方法.