цвет ggplot на основе имени переменной частичного совпадения - PullRequest
0 голосов
/ 28 мая 2020

Если у меня есть фрейм данных, как показано ниже, как я могу использовать ggplot с «переменными» в качестве переменной фасета, чтобы сделать «AB C X1» + «AB C X2» и «DEF X1» + График "DEF X2" одного цвета, но на разных участках? Это будут линейные графики, и я буду использовать facet_wrap, который помогает с решением.

x <- c("ABC X1", "ABC X2", "DEF X1", "DEF X2", "ABC X1", "ABC X2", "DEF X1", "DEF X2")
y <- c(6, 23, 14, 19, 77, 34, 11, 109)
df1 <- melt(data.frame(variables = x, values = y), id=c("variables"))

Изменить: включены некоторые значения для переменных. Изменить: строка в «переменных» не всегда будет того же размера, что и в приведенном примере, но строка перед X1 и X2 для совпадающих пар всегда будет одинаковой (т.е. «AB C X1» и «AB * 1008» * X2 "может быть" ABCDEF X1 "и" ABCDEF X2 ").

1 Ответ

0 голосов
/ 28 мая 2020

Использование str_extract (пакет stringr) для получения первых частей:

x <- c("ABC X1", "ABC X2", "DEF X1", "DEF X2")
y <- c(6, 23, 14, 19)
df1 <- data.frame(variables = x, values = y)

ggplot(df1, aes(x=variables, y=values, color=str_extract(variables, ".*(?=\\bX\\d+)")))  +
  geom_point() + 
  labs(color = "Variables")

Я ищу пробел \\b, за которым следует X, за которым следует один или более цифр \\d+. Затем я беру все перед этим, чтобы создать цветовую группу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...