ggplot - могу ли я отобразить все данные в каждом фасете, разделив их на другую переменную? - PullRequest
1 голос
/ 17 июня 2020

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

Используя приведенные ниже фиктивные данные, если я хочу просто вести учетные записи с течением времени по типу учетной записи, который показывает то, что я хочу отображать.

df1 <- data.frame(acc_type=rep(c("cash", "credit"), each=10),
                 year = as.factor(rep(2019, each = 20)),
                 x_date=seq(10),
                 accounts=runif(20, 1000, 10000))


df1$acc_type2 <- df1$acc_type

ggplot(df1, aes(x_date,accounts, group=acc_type)) + 
  geom_line(data=df1[,3:5], aes(x=x_date, y=accounts, group=acc_type2), colour="grey") +
  geom_line() + 
  facet_wrap(~ acc_type, nrow = 2)

enter image description here

Однако, когда я ввожу год, данные выглядят немного смешно

df2 <- data.frame(acc_type=rep(c("cash", "credit"), each=10),
                  year = as.factor(rep(2020, each = 20)),
                 x_date=seq(10),
                 accounts=runif(20, 1000, 10000))

df2$acc_type2 <- df2$acc_type

df3 <- rbind(df1, df2)
df3$year2 <- df3$year


ggplot(df3, aes(x_date,accounts, group=acc_type,colour= year)) + 
  geom_line(data=df3[,-(1:2)], aes(x=x_date, y=accounts, group=acc_type2, colour = year2), colour="grey") +
  geom_line() + 
  facet_wrap(~ acc_type, nrow = 2)

enter image description here

Тогда данные выглядят так, как будто не сгруппированы правильно, любая помощь в том, как я могу сгруппировать их должным образом и поместить данные, которые не так важны для фона, будет очень признательна.

1 Ответ

2 голосов
/ 17 июня 2020

Я считаю, что это то, что вам нужно. Уловка состоит в том, чтобы не выбирать переменную группировки фасетов во вторых данных:

library(ggplot2)
library(dplyr)
ggplot(data=df3, aes(x=x_date, y=accounts)) + 
  geom_line(data = select(df3, -acc_type),
            aes(group = interaction(acc_type2,year)), color = "gray") +
  geom_line(aes(color= year)) + 
  facet_wrap(~acc_type, nrow = 2)

enter image description here

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