我希望绘制三个不同颜色的数据点来表示三个值范围。例如:
library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = qsec))
上述代码会生成以下内容:
现在,我想将它修改成这样:qseq 值小于 17 的文本颜色为黑色,17 到 19 之间的值为黄色,大于 19 的值为红色。我尝试了各种方法,但似乎都不起作用:
源自 这里
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(fill = qsec)) +
scale_fill_gradient(colours = c("black","yellow","red"),
breaks=c(0,17,19), labels = format(c("0","17","19")))
这将生成:
所以,色条似乎是正确的,但实际上并没有应用颜色。
在ggplot2 heatmap with colors for ranged values中给出的解决方案似乎很有希望,但我无法将它们与
geom_point()
一起使用。对于类似的其他帖子,如侧边栏中列出的帖子也是如此。
我意识到我可能需要使用某种离散比例尺来代替scale_fill_gradientn
,但我尝试使用scale_color_manual()
失败了:
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(color = factor(qsec))) +
scale_color_manual(values=c("black", "yellow","red")
Error: Insufficient values in manual scale. 30 needed but only 4 provided.
我猜我得以某种方式使用cut()
或者factor()
,但我似乎无法想出如何做。有什么建议吗?
geom_line
并不是你需要的正确几何图形类型,也许你需要使用geom_segment
? - Rolandgeom_segment
会运行。图形来自于geom_smooth
。我要问一个问题。谢谢。 - pacomet