Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2错误:提供给连续刻度的离散值_R_Ggplot2 - Fatal编程技术网

R ggplot2错误:提供给连续刻度的离散值

R ggplot2错误:提供给连续刻度的离散值,r,ggplot2,R,Ggplot2,我有一个名为“merged”的数据集,其中包含3个数字列“pauseMedian”、“numtotalpause”和“diff”。我还有一个splineHull数据集,其中还包含数字列“pauseMedian”和“NumtotalPause”,以及一个6级因子“microstyle” 我有下面的代码,它工作得很好。它绘制了一个散布的扑通声,然后用根据“微样式”着色的splineHull多边形覆盖它 脚本1: ggplot(data=merged,aes(x = pauseMedian, y =

我有一个名为“merged”的数据集,其中包含3个数字列“pauseMedian”、“numtotalpause”和“diff”。我还有一个splineHull数据集,其中还包含数字列“pauseMedian”和“NumtotalPause”,以及一个6级因子“microstyle”

我有下面的代码,它工作得很好。它绘制了一个散布的扑通声,然后用根据“微样式”着色的splineHull多边形覆盖它

脚本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)
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)
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
       + geom_point()  
然后,我还想通过只添加一个属性color=diff来更改散点图中点的颜色

脚本2:

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)
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)
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
       + geom_point()  
我看到以下错误:

错误:离散值提供给连续刻度

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

脚本3:

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)
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)
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff)) 
       + geom_point()  

那么,脚本2发生了什么呢?错误来自哪里?我如何才能使它工作?

现在我们知道这两个颜色变量的类型不同,问题就来了。您可以尝试使用不同的比例(例如,填充而不是颜色)


如果您必须使用相同的比例(颜色),并且无法将变量转换为相同的类型,请参见此了解更多信息:

显然,对于两种不同的几何图形,您不能有不同的颜色美学。作为一种变通方法,请改为对点使用填充美学。这意味着您必须使用内部填充的点标记样式(请参见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) 
添加
color=NA
(在
aes()
之外),可以去除点标记周围的默认黑色边框。如果您希望在点周围有彩色边框,只需将
color=NA
更改为您喜欢的任何颜色即可


另请参见
ggplot2
Google组,讨论一个类似的问题和一些解决方法。

只需在上面首选的eipi10答案中添加一些内容(谢谢!!)。 color=“NA”选项必须介于“”之间,才能去除圆形(pch=21)周围的边框。如果使用color=NA(不带引号),则整个形状将消失且不会打印。
我可能会对答案发表评论,但我仍然没有这方面的声誉:)

这看起来确实很奇怪-如果不查看示例数据,很难准确指出错误。另外,您是否尝试过将
color=diff
移动到
geom_点(aes(color=diff))
?@SeñorO嗨,是的,我尝试过。它给出了同样的错误。在脚本2中,有两个颜色属性,一个在ggplot aes中,另一个在geom_多边形aes中。前者被分配一个数值“diff”,后者被分配一个因子值“microstyle”。我猜,也许ggplot不能同时处理数字颜色和因子颜色?事实上,现在我想这可能是正确的,因为它需要为颜色创建一个图例。尝试对Polygony使用
fill=microstyle
,您不需要发布整个数据集。只要发布一个小样本,我们就可以使用您的数据重现问题。例如,发布
dput的输出(合并[示例(1:nrow(合并),20),])
。这将给出20行随机选择的数据(对splineHull做同样的处理)。使用一些(我希望)与您的数据相似的伪数据,我能够得到相同的错误消息。但是,当我颠倒
geom_多边形
geom_点
的顺序时,我得到
错误:提供给离散比例的连续值
。这两个几何图形的色阶之间似乎存在冲突,一个是离散的,另一个是连续的,但我不确定为什么会发生这种情况。我原以为有两个单独的几何图形会导致两个单独的色阶。嗨,我有一个非常大的数据集,所以很难在这里发布数据。alpha应该大于0,但这不是问题所在,我只需要绘制未填充多边形的轮廓,因为由于错误,绘图根本不会显示。我试过你的解决办法,但我也犯了同样的错误。对于geom_point中指定的颜色,它是一个数字变量“diff”,geom_polygon中指定的颜色是一个离散的“因子”。我只是猜测,如果颜色属性被赋予不同的类型,ggplot就不起作用了。哦,这是丢失信息的关键部分。见新解决方案嗨,谢谢。是的,它是这样工作的。实际上,我还是更喜欢颜色,因为我只想要轮廓(空多边形)。不管怎样,这个解决方案目前还有效。谢谢很高兴看到这个!我花了很长时间想知道为什么我不能让它工作。虽然
color=“NA”
将给出白色边框,因此如果有重叠点/几何体,边框仍将可见。这很好(+1),但根据Juan下面的回答
color=“NA”
必须有引号,否则将不会绘制点。