gpt4 book ai didi

r - ggplot geom_point(),其颜色基于特定的离散值

转载 作者:行者123 更新时间:2023-12-03 12:11:09 31 4
gpt4 key购买 nike

我正在尝试绘制三个值范围的三种不同颜色的数据点。例如:

library(ggplot2)
ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = qsec))

上面产生:



现在,我想对此进行修改,以使qseq值<17为黑色,介于17和19之间的值为黄色,而大于19的值为红色。我尝试了各种方法,但是似乎都不起作用:
  • 取自here
    ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(fill = qsec)) + 
    scale_fill_gradientn(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(),但我似乎不知道如何使用。有什么建议?

    最佳答案

    您需要将值cut到间隔中:

    library(ggplot2)
    ggplot(mtcars, aes(wt, mpg)) +
    geom_point(aes(colour = cut(qsec, c(-Inf, 17, 19, Inf))),
    size = 5) +
    scale_color_manual(name = "qsec",
    values = c("(-Inf,17]" = "black",
    "(17,19]" = "yellow",
    "(19, Inf]" = "red"),
    labels = c("<= 17", "17 < qsec <= 19", "> 19"))

    关于r - ggplot geom_point(),其颜色基于特定的离散值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966582/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com