R颜色散点图基于值

Jcr*_*w06 36 r

我可以根据一个标准绘制散点图并为点着色,即我可以将所有点> = 3着色为红色,其余为黑色.我希望能够以这种方式着色点:

  1. = 3红色

  2. <= 1蓝色
  3. 其余为黑色

我在下面的代码完成了第1步和第3步,但我不确定如何合并第2步的第二个参数

data<- read.table('sample_data.txtt', header=TRUE, row.name=1)
pos<- data$col_name1
cn<- data$col_name2
plot(pos,cn, ylim=c(0,5), col="blue")
plot(pos,cn, col=ifelse(cn>=3,"red","black"), ylim=c(0,10))
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!!! 提前致谢

在此输入图像描述

Cnr*_*nrL 47

这里最好的做法是在数据对象中添加一列来表示点颜色.然后通过过滤更新它的部分.

data<- read.table('sample_data.txtt', header=TRUE, row.name=1)
# Create new column filled with default colour
data$Colour="black"
# Set new column values to appropriate colours
data$Colour[data$col_name2>=3]="red"
data$Colour[data$col_name2<=1]="blue"
# Plot all points at once, using newly generated colours
plot(data$col_name1,data$col_name2, ylim=c(0,5), col=data$Colour, ylim=c(0,10))
Run Code Online (Sandbox Code Playgroud)

应该清楚如何使其适应具有更多颜色和条件的图.

  • `cut`会更好地创建新列,即`data $ Color < - cut(数据$ col_name2,breaks = c(-Inf,1,3,Inf),labels = c("blue","black") ,"红色"))`.保持一条线,甚至更容易推广 (10认同)

tim*_*ffe 15

它也可以指定ifelse()两次:

plot(pos,cn, col= ifelse(cn >= 3, "red", ifelse(cn <= 1,"blue", "black")), ylim = c(0, 10))
Run Code Online (Sandbox Code Playgroud)