【问题标题】:histogram-like plot with different colors in RR中具有不同颜色的直方图
【发布时间】:2012-11-13 16:19:50
【问题描述】:

我正在尝试以类似直方图的方式绘制矢量data。这总是很容易,因为plot(data, type="h") 正是我想要的。但是,颜色有问题。我的向量data 看起来像这样:

 data = c(1,2,2,3,1,1,2,3,1,2,2,3, ... )

我想看到的是,每个1 都以一种颜色绘制,每个2 以不同的颜色绘制,每个3 同样。我试图用

来实现
 plot(data, type="h", col=c("red","blue","green")

但是它失败了,因为 R 循环了颜色向量,所以第一个条是红色的,第二个是蓝色的,第三个是绿色的,第四个是红色的,依此类推。

我对通用解决方案非常感兴趣,因为我的data 向量并不总是由数字123 组成。很多情况下,vector 都包含 1 到 6 的数字。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: r plot


    【解决方案1】:

    您需要创建一个长度相同的颜色向量,如下所示:

    data = c(1,2,2,3,1,1,2,3,1,2,2,3)
    colors = c("red","blue","green")
    plot(data, type="h", col=colors[data])
    

    这是因为colors[data] 看起来像:

    print(colors[data])
    #  [1] "red"   "blue"  "blue"  "green" "red"   "red"   "blue"  "green" "red"  
    # [10] "blue"  "blue"  "green"
    

    【讨论】:

    • 如何将其应用于一系列数据?例如,我想将介于 -100 和 100 之间的任何东西都设为红色,而其他一切都设为蓝色?
    • @user1007742:使用cut来划分它:即mydatacut = cut(x, c(-Inf, -100, 100, Inf))。这将创建一个具有三个级别的因子然后您可以执行 colors[as.numeric(mydatacut)] 其中因子是,在您的示例中,c("blue", "red", "blue")
    【解决方案2】:

    一般方法试试这个:

    data = c(1,2,2,3,1,1,2,3,1,2,2,3,4,5,6,7,12,3)
    colors = rainbow(length(unique(data)))
    plot(data, type="h", col=colors[data])
    

    【讨论】:

      【解决方案3】:
       colors = rainbow(length(unique(data)));
       hist(data, col=colors[data]) 
      

      使用先生。 lapalme的数据(上)

      【讨论】:

        猜你喜欢
        • 2016-12-13
        • 2020-08-30
        • 2019-07-30
        • 2021-11-04
        • 2020-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        相关资源
        最近更新 更多