根据行绘制条件颜色

时间:2016-02-18 19:10:05

标签: r plot colors

我有两个名为离群值数据的数据框。

离群值只保留需要着色的行号。 数据有1000个数据。 它有两列名为 x y 。 如果异常值中存在行号,我希望绘图中的点为红色,否则黑色

plot(data$x, data$y, col=ifelse(??,"red","black"))

应该有什么东西? 。

2 个答案:

答案 0 :(得分:1)

我认为这可以通过在数据框中创建一个新的颜色列来实现:

data$color <- "black"

然后将异常值设置为不同的值:

data[outlier,"color"] <- "red"

我没有您的确切数据,但我认为我使用以下内容得到了类似于您想要的内容:

outlier <- c(1, 2, 7, 9)
data <- data.frame(x=c(1,2,3,4,5,6,7,8,9,10),
                   y=c(1,2,3,4,5,6,7,8,9,10))
data$color <- "black"
data[outlier,"color"] <- "red"
data
    x  y color
1   1  1   red
2   2  2   red
3   3  3 black
4   4  4 black
5   5  5 black
6   6  6 black
7   7  7   red
8   8  8 black
9   9  9   red
10 10 10 black

最后使用数据中的新值进行绘图:

plot(data$x, data$y, col=data$color)

结果:the following chart

答案 1 :(得分:1)

嗨,这种方式对我有用ifelse,让我知道你的想法:

outlier <- sample(1:100, 50)
data <- data.frame(x = 1:100, y = rnorm(n = 100))
plot(
  data[ ,1], data[ ,2]
  ,col = ifelse(row.names(data) %in% outlier, "red", "blue")
  ,type = "h"
)