Ошибка: не знаю, как добавить e2 к сюжету - PullRequest
0 голосов
/ 13 декабря 2018

Здравствуйте, я работаю над набором данных, который выглядит следующим образом:

raw_data = 

week    v1         v3         v4            v5          v6
1      17         20.983819   7.799831    16.0600278  113.018687
2      34         22.651678   8.090671    16.4898951  120.824817
3      15         24.197048   6.892516    16.9805836  128.105372
4      14         26.016688   5.272781    17.471264   140.15794
5      26         27.572317   10.767018   17.8686156  154.886518
6      37         29.018684   21.280104   19.8096452  165.244061
7      27         30.395094   32.140543   22.937902   176.453934
8      24         31.832068   44.008145   28.714597   184.7598
9      16         33.383742   45.704626   39.2958153  193.461108
10     28         34.877819   39.355206   45.9069661  201.305558

Я пытаюсь добиться того, чтобы построить переменные от v3 до v6 как график с областями с накоплением, а переменную v1 как линиюГрафик на том же графике за неделю.

Я попробовал следующий код, который строит график области стека, но не линейный график.

mdf <- melt(raw_data, id="Week")  # convert to long format
p <- ggplot(mdf, aes(x=Week, y=value)) + geom_area(aes(fill= mdf$variable), position = 'stack') + theme_classic()
p + ggplot(raw_data, aes(x=Week, y=v1)) +geom_line()

, и я получаю следующую ошибку

Error: Don't know how to add e2 to a plot

Я устал от метода, предложенного в этой статье Как наложить графики geom_bar и geom_line с разным количеством элементов с помощью ggplot2? и использовал приведенный ниже код

mdf <- melt(raw_data, id="Week")  # convert to long format
p <- ggplot(mdf, aes(x=Week, y=value)) + geom_area(aes(colour = 
mdf$variable, fill= mdf$variable), position = 'stack') + theme_classic()
p + geom_line(aes(x=Week, y=mdf$variable=="v1"))

но затем я получил следующую ошибку

Error: Discrete value supplied to continuous scale

Я попытался преобразовать переменную v1 согласно приведенному ниже коду, ссылающемуся на следующую статью, однако это не помогло разрешить.

Как получить уровни дискретных факторов, которые будут рассматриваться как непрерывные?

raw_data$v1 <- as.numeric(as.character(raw_data$v1))

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

Большое спасибо за помощь заранее !!

1 Ответ

0 голосов
/ 14 декабря 2018

Использование вашей команды melt не работает для меня, поэтому я вместо этого использую gather.

Все, что вам нужно сделать, это добавить geom_line и указать данные и сопоставление:

mdf <- tidyr::gather(raw_data, variable, value, -week, -v1)

ggplot(mdf, aes(week, value)) + 
  geom_area(aes(fill = variable), position = 'stack', color = 'black') + 
  geom_line(aes(y = v1), raw_data, lty = 2)

Примечание: не используйте $ внутри aes, никогда!

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