【问题标题】:How to plot different colors on a graph with r code depending on x axis如何根据 x 轴使用 r 代码在图形上绘制不同的颜色
【发布时间】:2020-05-24 16:05:07
【问题描述】:

我不知道这在 rstudio 中是否可行。例如,我只想用 2 种或更多颜色进行绘图;用这个简单的代码,

fun <-function (x) {x^2}

plot(fun, xlim = c(-1,1))

例如,如何以 x (-1,0) 蓝色和 x (0,1) 红色的方式绘制它?

我不想制作 2 条曲线我只想制作一条并更改其中的颜色,因为我需要它来处理更复杂的情况(费根鲍姆图)所以我不想分离函数,谢谢.

【问题讨论】:

    标签: r plot colors


    【解决方案1】:

    使用该功能有点困难,但您可以创建一个带有要绘制的值的临时数据框,然后为每个值分配颜色。应该是这样的:

    fun <-function (x) {x^2}
    fun_col <- function(x) ifelse(x<0,'blue','red')
    
    data_plot = data.frame(x=seq(-1,1,by = 0.01),y = fun(seq(-1,1,by = 0.01)),
                       col =fun_col(seq(-1,1,by = 0.01)))
    
    library(ggplot2)
    ggplot(data_plot, aes(x = x, y = y))+
      geom_line(color = data_plot$col, lwd =2)
    

    【讨论】:

    • 当使用 ggplot 的预期方法是将变量分配给 aes 内部的颜色时,为什么要硬编码颜色?
    • @camille 不明白你的意思,除非你说在 aes 中你可以定义一个函数来分配颜色
    • ggplot范式一般是将变量赋给颜色等视觉编码。在这种情况下,这意味着数据中有一个与颜色相关联的变量——不一定是颜色本身的名称——并以此方式创建色标
    【解决方案2】:

    ggplot2stat_function() 可用于绘制函数。可以通过访问计算变量x 来控制着色。 data.frame 指定 x 轴上的范围。

    library(ggplot2)
    ggplot(data.frame(x = c(-1, 1)), aes(x, colour = stat(x > 0))) +
      stat_function(fun = ~ .x^2) +
      scale_colour_manual(guide = "none", values = c("blue", "red"))
    

    显然,x == 0 的颜色并没有完全切换。因此,我们可能需要增加计算函数的数据点数:

    library(ggplot2)
    ggplot(data.frame(x = c(-1, 1)), aes(x, colour = stat(x > 0))) +
      stat_function(fun = ~ .x^2, n = 500) +
      scale_colour_manual(guide = "none", values = c("blue", "red"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-26
      • 2022-11-13
      • 2021-02-22
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多