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?
Just to add something to the preferred eipi10 answer above (thank you for that!!). The colour="NA" option in order to get rid of the border around the circle shape (pch=21) has to be between "". If you use colour=NA (without the quotation marks) the whole shape disappears and is not plotted. I would have just commented on the answer but I still don't have reputation for that :)
Now that we know the two color vars are of different types, there's the issue. You can try using a different scale for one (e.g. fill instead of color)
Error: Discrete value supplied to continuous scale
If you have to use the same scale (color), and can't convert the variables to the same type, see this for more info: Plotting continuous and discrete series in ggplot with facet
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:Adding
colour=NA
(outside ofaes()
), gets rid of the default black border around the point markers. If you want a colored border around the points, just changecolour=NA
to whatever colour you prefer.Also see this thread from the
ggplot2
Google group, discussing a similar problem and some workarounds.