【问题标题】:How to fill area under curve with visual spectrum colors如何用视觉光谱颜色填充曲线下的区域
【发布时间】:2018-07-04 12:12:09
【问题描述】:

我正在尝试创建一条曲线,使可视光谱颜色填充曲线下方的区域。

所以曲线下区域的左侧是蓝色,曲线下区域的右侧是红色。

这是一个示例代码:

library(ggplot2)

set.seed(1)
x <- seq(-4, 4, length=271)
y <- dnorm(x)

df <- data.frame(x,y)

col <- rainbow(271)

ggplot(data=df) + geom_line(aes(x=x, y = y)) + 
  geom_area(aes(y = y, x = x)) + theme_minimal() + 
  scale_color_gradient(low = '#FF0000FF', high = '#FF0006FF')

但我得到的只是曲线下的黑色区域。

感谢您的帮助!

【问题讨论】:

    标签: r ggplot2 gradient


    【解决方案1】:

    这个怎么样?

    df$z  <- sqrt(abs(x))*sign(x)
    
    ggplot(df, aes(x=x, y=y)) + 
      geom_line() +
      geom_area(aes(group=z, color=z)) + 
      theme_minimal() + 
      scale_color_gradient(low = 'blue', high = 'red')
    

    收益

    【讨论】:

      【解决方案2】:

      我想获得一系列可见光颜色。

      我的解决方案与上面的解决方案非常相似。我用scale_colour_gradientn()

      [![library(ggplot2)
      library(RColorBrewer)
      library(colorRamps)
      
      set.seed(1)
      x <- seq(-4, 4, length=271)
      y <- dnorm(x)
      
      df <- data.frame(x,y)
      
      colfunc<-colorRampPalette(c("royalblue", "green", "springgreen", "yellow2", "yellow", "red", "red2", "red3", "red4"))
      
      ggplot(df, aes(x=x, y=y)) +  
        geom_segment(aes(xend=x, yend=0, colour=abs(x)^0.7*sign(x)), size = 1) +
        scale_colour_gradientn(colours = colfunc(271))
      

      【讨论】:

        猜你喜欢
        • 2020-10-17
        • 1970-01-01
        • 1970-01-01
        • 2019-08-14
        • 2021-06-23
        • 2020-07-02
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        相关资源
        最近更新 更多