R ggplot2错误:提供给连续刻度的离散值
我有一个名为“merged”的数据集,其中包含3个数字列“pauseMedian”、“numtotalpause”和“diff”。我还有一个splineHull数据集,其中还包含数字列“pauseMedian”和“NumtotalPause”,以及一个6级因子“microstyle” 我有下面的代码,它工作得很好。它绘制了一个散布的扑通声,然后用根据“微样式”着色的splineHull多边形覆盖它 脚本1: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 =
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”
必须有引号,否则将不会绘制点。