varias studio lineas leyendas graficos grafico graficas dispersion r

studio - Puntos de trazado de dispersión de color R basados en valores



plot en r (3)

Soy capaz de trazar un diagrama de dispersión y colorear los puntos según un criterio, es decir, puedo colorear todos los puntos> = 3 como rojo y el resto como negro. Me encantaría poder colorear puntos de esta manera:

  1. = 3 colores rojos

  2. <= 1 color azul
  3. El resto como negro

El código que tengo a continuación completa los pasos 1 y 3, pero no estoy seguro de cómo incorporar el segundo argumento del paso 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))

Cualquier ayuda seria genial !!! Gracias por adelantado


Es mejor crear una nueva variable de factor usando cut (). He agregado algunas opciones usando ggplot2 también.

df <- data.frame( X1=seq(0, 5, by=0.001), X2=rnorm(df$X1, mean = 3.5, sd = 1.5) ) # Create new variable for plotting df$Colour <- cut(df$X2, breaks = c(-Inf, 1, 3, +Inf), labels = c("low", "medium", "high"), right = FALSE) ### Base Graphics plot(df$X1, df$X2, col = df$Colour, ylim = c(0, 10), xlab = "POS", ylab = "CS", main = "Plot Title", pch = 21) plot(df$X1,df$X2, col = df$Colour, ylim = c(0, 10), xlab = "POS", ylab = "CS", main = "Plot Title", pch = 19, cex = 0.5) # Using `with()` with(df, plot(X1, X2, xlab="POS", ylab="CS", col = Colour, pch=21, cex=1.4) ) # Using ggplot2 library(ggplot2) # qplot() qplot(df$X1, df$X2, colour = df$Colour) # ggplot() p <- ggplot(df, aes(X1, X2, colour = Colour)) p <- p + geom_point() + xlab("POS") + ylab("CS") p p + facet_grid(Colour~., scales = "free")


Lo mejor que puede hacer aquí es agregar una columna al objeto de datos para representar el color del punto. A continuación, actualice las secciones de la misma mediante el filtrado.

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))

Debe quedar claro cómo adaptar esto para parcelas con más colores y condiciones.


También funcionaría simplemente especificar ifelse() dos veces:

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