Как я могу сделать диаграмму рассеяния в R с различными цветами в зависимости от ряда? - PullRequest
0 голосов
/ 22 марта 2020

У меня есть следующий набор данных, импортированный в RStudio

enter image description here

Я хотел бы создать диаграмму рассеяния, где точки строк с 1 по 3 красные и точки из остальных рядов синие. Как мне изменить код, пожалуйста?

 plot(x=dataset$`col1`,y=dataset$col2, xlab="col1", ylab="col2",pch=16)

Ответы [ 3 ]

1 голос
/ 22 марта 2020

дополнительная опция

library(tidyverse)
set.seed(0)
df <- tibble(
  col1 = runif(5),
  col2 = runif(5)
  ) %>% 
  mutate(grp = row_number()<= 3)

ggplot(df, aes(col1, col2, color = grp)) +
  geom_point() +
  scale_color_manual(values = c("red", "blue")) +
  theme(legend.position = "none")
1 голос
/ 22 марта 2020

В целом, вы можете инициализировать пустой plot, а затем points на соответствующих подмножествах с желаемыми цветами.

with(dataset, plot(col1, col2, xlab="col1", ylab="col2", type="n"))
with(dataset[1:3, ], points(col1, col2, pch=16, col="red"))
with(dataset[-(1:3), ], points(col1, col2, pch=16, col="blue"))

enter image description here


Данные

dataset <- structure(list(col1 = 1:5, col2 = c(1, 1, 1, 1, 1)), class = "data.frame", row.names = c("a", 
"b", "c", "d", "e"))
1 голос
/ 22 марта 2020

Если вы довольны окрашиванием первых трех рядов в красный, вы можете использовать это:

dataset <- data.frame(col1 = 1:5,
                      col2 = 1,
                      row.names = c("a", "b", "c", "d", "e"))


my_colors <- c(rep("red", 3), # first 3 red
               rep("blue", nrow(dataset) - 3)) # rest is blue
plot(x = dataset$col1,
     y = dataset$col2, 
     xlab = "col1", 
     ylab = "col2",
     pch = 16, 
     col = my_colors)
...