ggplot, который выглядит как сюжет основных эффектов в R, но не - PullRequest
0 голосов
/ 11 октября 2019

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

> gains.df
  var   level1   level2      gain
A  x1 12.44224 16.15509 -3.712853
B  x2 16.24322 12.35410  3.889120
C  x3 16.54085 12.05647  4.484381
D  x4 16.00008 12.59725  3.402832
E  x5 15.62463 12.97269  2.651939

Диаграмма, которую я пытаюсь составить, выглядит следующим образом, с одним аспектом на var, два факторных уровня как level1 и level2 (соответствует 1и 2) и сегмент линии создается из значения level1 слева и значения level2 справа. Таким образом, окончательный график должен иметь пять линейных сегментов с наклоном, отражающим усиление в столбце gain.

enter image description here

Я пытаюсь это сделать:

ggplot(gains.df, aes(level1,level2)) + geom_line() + facet_wrap(~var) 

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

enter image description here

Я чувствую, что яупустить что-то очень простое и искать совета. Вот данные. Спасибо.

gains.df <- structure(list(var = structure(1:5, .Label = c("x1", "x2", "x3", 
"x4", "x5"), class = "factor"), level1 = c(12.4422350148863, 
16.2432212378588, 16.5408518645381, 16.0000771728686, 15.6246308859921
), level2 = c(16.155087746947, 12.3541015239745, 12.0564708972952, 
12.5972455889646, 12.9726918758412), gain = c(-3.71285273206076, 
3.88911971388437, 4.48438096724297, 3.40283158390399, 2.65193901015094
)), class = "data.frame", row.names = c("A", "B", "C", "D", "E"
))

1 Ответ

1 голос
/ 11 октября 2019

Первые два члена ggplot(aes() относятся к значениям x и y соответственно, поэтому это помогает преобразовать ваши данные в более длинный формат, прежде чем они перейдут в ggplot. В этом случае я переместил имена столбцов в новый столбец «уровень», а значения, которые были там, в новый столбец «значение».

library(tidyverse)
gains.df %>%
  select(-gain) %>%
  pivot_longer(-var, "level", "value") %>%
  # tidyr::pivot_longer is new in v1.0.0; older versions of tidyr could use:
  # tidyr::gather(level, value, -var)
  ggplot(aes(level, value, group = var)) +
  geom_line() +
  facet_wrap(~var)

enter image description here

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