【问题标题】:Change color from a given date?从给定日期更改颜色?
【发布时间】:2016-09-28 11:32:24
【问题描述】:

我有这个情节,我需要将线的颜色从观察 2,000 起更改为红色。我已经使用 ggplot 完成了它,这很容易,但我想使用 Base R 来完成。我一直在阅读一些帖子,但我还没有弄清楚我应该如何做到这一点。

就是这样,部分情节为蓝色,另一部分为红色。

非常感谢任何建议或建议!

【问题讨论】:

    标签: r plot base


    【解决方案1】:

    更改lines() 颜色有点麻烦,我使用segments() 制作重复的端点数据。

    # make a sample data
    df <- data.frame(ind = 1:200, y = runif(200, 0, 10))
    
    #  combine df and df shifting one row
    df <- cbind(df, rbind(df, c(NA, NA))[-1,])
    
    plot(df[,1:2], type="n")         # (edit) using Mr.Pereira's code, thanks.
    segments(df[,1], df[,2], df[,3], df[,4], col = ifelse( df[,1] < 150, "blue", "red"))
    

    【讨论】:

      【解决方案2】:

      试试这个:

      df <- data.frame(ind = 1:5000, y = runif(5000, 0, 10))
      
      
      plot(df$y, type="h", col= ifelse( df$ind < 2000, "blue", "red"))
      

      【讨论】:

        【解决方案3】:

        您没有提供任何数据,所以我只能假设。这里使用基本 R plot 函数的解决方案:

        # some data
        set.seed(123)
        d <-runif(3000, 0, 2)
        d[sample(1:3000, 2800)] <- 0 # set some zero values
        
        # A color vector
        COL <- c(rep(1, 2000), rep(2, length(d)))
        # and the plot using the histogram option:
        plot(d, type="h", col=COL)
        

        正如你所说的“h”函数不是一个合适的工具,你也可以使用looplines

        plot(d, type="n")
        for(i in 1:length(d)){
           M <- cbind(c(i, i), c(d[i], 0)) # Matrix of start and end points of the line
           lines(M, col=COL[i])
        }
        

        【讨论】:

        • 谢谢,如果我使用直方图选项,这将有效。我正在使用 line 选项。这是使用移动应用程序 i 发送的消息的每小时数据的调整时间序列(我无法发布数据)。所以我猜直方图和用于此目的的线并不完全相同。
        • @adrian1121 尝试构建一个看起来像您的数据集或交换值。我认为颜色不适用于使用“l”选项的矢量。我还编辑了我的答案。
        猜你喜欢
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-25
        • 1970-01-01
        相关资源
        最近更新 更多