我有一个名为“merged”的数据集,其中包含3个数字列“pauseMedian”和“numTotalPauses”和“diff”。我还有一个splineHull数据集,它还包含数字列“pauseMedian”和“numTotalPauses”,以及一个6级因子“microstyle”
我有以下代码,完美无缺。它绘制一个散点图,然后使用根据“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)
然后,我还想通过添加一个属性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)
我看到以下错误:
Error: Discrete value supplied to continuous scale
我不知道为什么我会看到这个错误。如果我仍然想要彩色散点图但没有多边形,我会运行以下代码再次运行。
脚本3:
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff))
+ geom_point()
那么,脚本2 发生了什么,错误来自何处,以及如何使其工作?
答案 0 :(得分:16)
显然,对于两种不同的宝石,你不可能有不同的色彩美感。作为解决方法,请使用填充美学来代替点。这意味着您必须使用具有填充内部的点标记样式(请参阅?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)
添加colour=NA
(aes()
之外),摆脱点标记周围的默认黑色边框。如果您想在点周围使用彩色边框,只需将colour=NA
更改为您喜欢的任何颜色。
另请参阅ggplot2
Google小组的this thread,讨论类似的问题和一些解决方法。
答案 1 :(得分:4)
现在我们知道两种颜色变量是不同类型的,但问题就在于此。您可以尝试使用不同的比例(例如填充而不是颜色)
set.seed(123)
my_df1 <- data.frame(a=rnorm(100), b=runif(100), c=rep(1:10, 10))
my_df2 <- data.frame(a=rnorm(100), b=runif(100), c=factor(rep(LETTERS[1:5], 20)))
# this won't work. can't assign discrete and continuous to same scale
ggplot() +
geom_point(data=my_df1, aes(x=a, y=b, color=c)) +
geom_polygon(data=my_df2, aes(x=a, y=b, color=c), alpha=0.5)
Error: Discrete value supplied to continuous scale
# but use fill for polygons, and that works:
ggplot() +
geom_point(data=my_df1, aes(x=a, y=b, color=c)) +
geom_polygon(data=my_df2, aes(x=a, y=b, fill=c), alpha=0.5)
如果您必须使用相同的比例(颜色),并且无法将变量转换为相同类型,请参阅此信息以获取更多信息:Plotting continuous and discrete series in ggplot with facet
答案 2 :(得分:1)
只是为上面的首选eipi10答案添加一些内容(谢谢你!!)。 颜色=&#34; NA&#34;为了摆脱圆形周围的边界(pch = 21)必须在&#34;&#34;之间。如果使用color = NA(不带引号),整个形状将消失并且不会绘制。 我会对答案做出评论,但我仍然没有声名鹊起:)