问题描述
我有一个名为merged的数据集,它包含3个数字列pauseMedian和numTotalPauses和diff。我也有一个splineHull数据集,它还包含数字列pauseMedian和numTotalPauses,再加上一个6级因子microstyle
我有以下代码,这完美地工作。它绘制一个散点图,然后用splineHull多边形覆盖,这个多边形是根据microstyle着色的。
脚本1:
$ b $
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 =来改变散点图中点的颜色
脚本2:
ggplot(data = merged,aes(x = pauseMedian,y = numTotalPauses,color = diff))
+ geom_point()
+ geom_polygon(data = splineHull,
mapping = aes(x = PAUS eMedian,
y = numTotalPauses,
group = microstyle,
color = microstyle),
alpha = 0)
我看到以下错误:
错误:提供给连续的离散值规模
我不知道为什么我会看到这个错误。如果我仍然想要彩色散点图但没有多边形,我运行下面的代码再次运行。
脚本3:
ggplot(data = merged,aes(x = pauseMedian,y = numTotalPauses,color = diff))
+ geom_point()
那么,脚本2 发生了什么,错误来自哪里,以及我可以使它工作吗?
很明显,对于两种不同的geoms,你不能有不同的颜色美学。作为解决方法,请使用点的填充美学。这意味着您必须使用具有内部填充的点标记样式(请参阅?pch
并向下滚动以获取可用的点样式)。这是一种方法:
ggplot()+
geom_point(data = merged,aes(x = pauseMedian ,y = numTotalPauses,fill = diff),
pch = 21,size = 5,color = NA)+
geom_polygon(data = splineHull,
mapping = aes(x = pauseMedian,
y = numTotalPauses,
color = microstyle),
alpha = 0)
color = NA (在 aes()
之外),去掉点周围的默认黑色边框标记。如果你想在点附近有一个彩色边框,只需将 color = NA
更改为你喜欢的任何颜色即可。
ggplot2
Google的讨论类似的问题和一些解决方法。 I have a dataset called "merged", which contains 3 numeric columns "pauseMedian" and "numTotalPauses" and "diff". I also have a splineHull dataset, which also contains numeric columns "pauseMedian" and "numTotalPauses", plus a 6-level factor "microstyle"
I have the following code, which works perfectly. It plots a scatter plop and then overlay it with splineHull polygons colored according to "microstyle".
script 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)
Then, I also want to change the color of the points in the scatter plot by adding just one attribute color = diff.
script 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)
I see the following error:
Error: Discrete value supplied to continuous scale
I don't know why I see this error. If I still want colored scatter plot but no polygons, I run the following code it works again.
script 3:
ggplot(data=merged,aes(x = pauseMedian, y = numTotalPauses, color = diff))
+ geom_point()
So, what happened with script 2, where is the error from, and how can I make it work?
Evidently, you can't have different color aesthetics for two different geoms. As a workaround, use a fill aesthetic for the points instead. This means you have to use a point marker style that has a filled interior (see ?pch
and scroll down for the available point styles). Here's a way to do that:
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)
Adding colour=NA
(outside of aes()
), gets rid of the default black border around the point markers. If you want a colored border around the points, just change colour=NA
to whatever colour you prefer.
Also see this thread from the ggplot2
Google group, discussing a similar problem and some workarounds.
这篇关于ggplot2错误:提供给连续标度的离散值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!