Как сделать сгруппированные и сложенные линейные графики, используя два кадра данных?

У меня есть два набора данных, один для мужчин и один для женщин. У них обоих есть 4 переменные, а именно: Year, DK, SE NO. Итак, они оба выглядят так (конечно, только с разными значениями):

example of data set

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

idea of plot

Пожалуйста, размещайте данные в виде копируемого/вставляемого кода, а не изображений. Пробовали ли вы делать сюжеты самостоятельно? Где ты застрял? Я бы посоветовал попробовать ggplot2 с гранями по полу.

Gregor Thomas 22.04.2022 21:00

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

jay.sf 22.04.2022 21:02
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
2
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не сказали нам, как называются ваши фреймы данных, но давайте назовем их men и women. Пока они оба имеют точно одинаковые столбцы (включая имена), вы можете сделать:

library(tidyverse)

men %>% 
  mutate(Sex = "Men") %>%
  bind_rows(women %>% mutate(Sex = "Women")) %>%
  pivot_longer(c("DK", "SE", "NO")) %>%
  ggplot(aes(Year, value, colour = name)) +
  geom_line() +
  facet_grid(Sex~.) +
  theme_light()

Created on 2022-04-22 by the reprex package (v2.0.1)


Составленные данные с той же структурой, что и данные вопроса

set.seed(1)

men <- data.frame(Year = 1995:2022,
           DK = 35 + cumsum(rnorm(28)),
           SE = 40 + cumsum(rnorm(28)),
           NO = 38 + cumsum(rnorm(28)))

women <- data.frame(Year = 1995:2022,
           DK = 35 + cumsum(rnorm(28)),
           SE = 40 + cumsum(rnorm(28)),
           NO = 38 + cumsum(rnorm(28)))

Привет, большое спасибо за ваш комментарий и время! Я попробовал то, что вы сделали, но линии не отображаются/не видны: библиотека (tidyverse).. Я не знаю, как прикрепить сюда изображение моего R, но код, который я запускал, был: fig2m %>% mutate (Sex = "Мужчины") %>% bind_rows(fig2k %>% mutate(Sex = "Женщины")) %>% pivot_longer(c("DK", "SE", "NO")) %>% ggplot(aes(Year , значение, цвет = имя)) + geom_line() + facet_grid(Sex~.) + theme_light()

rr19 22.04.2022 21:29

Я получил этот комментарий, когда запускал код: geom_path: Каждая группа состоит только из одного наблюдения. Вам нужно настроить эстетику группы? геом_путь:

rr19 22.04.2022 21:31

@ rr19 Я предполагаю, что один или несколько ваших столбцов являются символьными, а не числовыми. Попробуйте заменить aes(Year на aes(as.numeric(Year)

Allan Cameron 22.04.2022 21:34

Но лучше бы не гадать. Очень трудно помочь, когда вы используете изображения данных, а не копируете/вставляете текст, что легко сделать.

Allan Cameron 22.04.2022 21:35

Спасибо!! Это сработало с помощью as.numeric(). Но теперь у меня другой вопрос. Я добавил + ylim(20,50) в конце кода, и это только для одной из панелей. Знаете ли вы, как я могу настроить пределы осей для обеих панелей?

rr19 22.04.2022 23:07

Другие вопросы по теме