【问题标题】:R plot - normal curves with color gradientR plot - 具有颜色渐变的正态曲线
【发布时间】:2013-02-21 21:03:42
【问题描述】:

如何在 R 中制作带有颜色渐变的曲线。看看这个flame。

应该是这样的。我试着先画一条法线,然后再画一条法线,但从技术上讲,你不能用一堆法线画出这样的图形,因为它们不会下降并在两边的正确位置相交。我怎样才能在 R 中做出这样的数字?有什么想法吗?

【问题讨论】:

  • 我选择了 beta 发行版,因为它在 [0.1] 上受支持。您可以通过修改 a 和 b 参数使 if 像您喜欢的那样“尖峰”。只要你保持它们相同,你就可以保持对称,但如果你想要一个“吹向一侧或另一侧”的火焰,你可以让它们不同。

标签: r


【解决方案1】:

到目前为止,我能做到的最好的是:

 par(bg="black")
 plot(seq(0.15,0.85,by=0.01), 
      5*dbeta(seq(0.15,0.85,by=0.01),10,10 ), 
      type="l" , ylim=c(0,700) )  # this just sets up the plotting framework.

 for( i in 1:200 ) { lines(x= seq(0.15,0.85,by=0.01), 
                           y= i*dbeta(seq(0.15,0.85,by=0.01),10,10 ), 
                     col= colorRampPalette(c("yellow", "orange", "red", "hotpink", 
                             "violet", "blue", "lightblue", "lightgreen", "darkgreen",
                             "black"))(200)[i], 
                      lwd=13) }
 par(bg="white")

我确实发现在该系列的开头添加“黑色”颜色会为整体结果添加额外的“发光”,但我没有发布该结果。

-----------------

这是我开始的,然后出现了逐次逼近和调整:

plot(seq(0.15,0.85,by=0.01), 5*dbeta(seq(0.15,0.85,by=0.01),10,10 ), 
            type="l" , ylim=c(0,100))
for( i in seq(0.2, 5) ) { lines(seq(0.15,0.85,by=0.01), 
                     i*5*dbeta(seq(0.15,0.85,by=0.01),10,10 ) ) }

颜色:

plot(seq(0.15,0.85,by=0.01), 5*dbeta(seq(0.15,0.85,by=0.01),10,10 ), type="l" ,
          ylim=c(0,130))
for( i in 1:35 ) {lines(seq(0.15,0.85,by=0.01), i*dbeta(seq(0.15,0.85,by=0.01), 10,10 ), 
                           col=colorRampPalette(c("yellow", "orange", "red", "violet", 
                                        "blue", "lightblue", "lightgreen"))(35)[i],
                   lwd=3) }

对于黑色背景和较浓的颜色以及顶部渐变为黑色:

 par(bg = 'black')
 plot(seq(0.15,0.85,by=0.01), 5*dbeta(seq(0.15,0.85,by=0.01),10,10 ), type="l", 
          ylim=c(0,130) )
 for( i in 1:35 ) { lines(seq(0.15,0.85,by=0.01), i*dbeta(seq(0.15,0.85,by=0.01),10,10), 
                          col=colorRampPalette(c("yellow", "orange", "red", "violet", 
                                "blue", "lightblue", "lightgreen", "darkgreen", 
                                 "black")) (35)[i], 
                           lwd=13) }

我注意到淡入黑色方面也控制了两侧的线宽。我没想到会这样,但它似乎是一个理想的功能。此处未涉及的另一个方面是增加透明度的可能性。 R RGB 函数中有一个 alpha 参数。

通过名称查找颜色的一个有用技巧:

grep("purple", colors(), value=TRUE)
 [1] "mediumpurple"  "mediumpurple1" "mediumpurple2" "mediumpurple3" "mediumpurple4"
 [6] "purple"        "purple1"       "purple2"       "purple3"       "purple4"      

如果您正在玩迭代以使渐变更平滑,那么您还需要调整 ylim 参数:选择 0.5^9*0.5^​​9/beta(10,10)*[iterations] ,因为那将是x=0.5 时的最大值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-27
    • 2017-10-07
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多