R 基于行打印条件颜色
我有两个data.frame,分别称为异常值和数据 异常值只保留需要着色的行号。 数据有1000个数据。 它有两列,分别称为x和y。 如果异常值中存在行号,我希望绘图中的点为红色,否则为黑色R 基于行打印条件颜色,r,plot,colors,R,Plot,Colors,我有两个data.frame,分别称为异常值和数据 异常值只保留需要着色的行号。 数据有1000个数据。 它有两列,分别称为x和y。 如果异常值中存在行号,我希望绘图中的点为红色,否则为黑色 plot(data$x, data$y, col=ifelse(??,"red","black")) 应该有东西在里面 我认为这可以通过在数据框中创建一个新的颜色列来实现: data$color <- "black" 结果是:您好,使用ifelse这种方法对我有效,请告诉我您的想法: outlie
plot(data$x, data$y, col=ifelse(??,"red","black"))
应该有东西在里面 我认为这可以通过在数据框中创建一个新的颜色列来实现:
data$color <- "black"
结果是:您好,使用
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"
)
异常值??应该是1:lenght(x)%in%outlier
您首先是如何创建outlier
的……长话短说,如果我打印outlier。[1]178 318 333 556 611 615 716 840 965
我不知道您为什么需要我如何创建异常值。但以防万一<代码>异常值=哪个(数据$x>(分位数(数据$x,0.5)+IQR))
分位数(数据$x,0.5)=中间值(数据$x)它产生正确的颜色,但稍微长一点。我想通过ifelse
或更简单的版本来实现它。再说一次,是的,它起作用了。谢谢你的时间嗨Etibar,我对你的评论有点困惑。我的解决方案是两行。你是说你只接受长度为0或1行的答案吗?
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)
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"
)