Данные графика для каждой строки в пределах одной команды - PullRequest
0 голосов
/ 20 января 2019

Я новичок в R и мне нужна помощь со следующим.

У меня есть следующие данные

# Simulate matrix of integers 
set.seed(1) 
df <- matrix(sample.int(5, size = 3*5, replace = TRUE), nrow = 3, ncol = 5)
print(df)
df <- tbl_df(df)  # tabulate as dataframe 
df <- rbind(df, c(3,5,4,1,4)) 
print(df)

Внутри одной команды мне нужно построить данные для каждой строки, так, чтобы ось Y: данные в каждой строке (в моем случае этозначения от 1 до 5);Ось X: значения 1,2,3,4,5, которые относятся к каждому столбцу.Таким образом, для каждой строки я пытаюсь представить, как меняются значения строк для каждого столбца.

Я попробовал следующее, которое работает, но есть две проблемы, которые мне нужно решить.Во-первых, это только графики по 1 строке за раз.Не эффективный способ делать вещи, особенно если есть много строк.Во-вторых, я не смог найти способ обозначить ось х как количество столбцов, поэтому я прибег к простому подсчету количества столбцов (т.е. 5) и поместил вектор ac (1: 5) для представления количества столбцов,Я также попытался поместить ncol (df) для представления оси X, но это возвращает ошибку, говорящую о том, что переменные имеют разную длину.Действительно, при запросе ncol (df) он возвращает число 5, которое является числом столбцов, но не выполняет то, что я хотел, т. Е. Последовательно представляет число столбцов 1,2,3,4,5.

 plot(c(1:5),df[1,], type = "b", pch=19,
 col = "blue", xlab = "number of columns", ylab = "response format")

Спасибо, ваша помощь очень ценится

1 Ответ

0 голосов
/ 20 января 2019

Вы можете сделать:

library(tidyverse)

df %>%
  mutate(row_number = as.factor(row_number())) %>%
  gather(columns, responses, V1:V5) %>%
  ggplot(aes(x = columns, y = responses, group = row_number, color = row_number)) +
  geom_line() + geom_point()

Вывод:

enter image description here

Что это делает:

  • Создает идентификатор для каждой строки (row_number);
  • Преобразует фрейм данных в длинный формат с 1 столбцом для columns и другим для responses;
  • Графикивсе на 1 графике, где каждый цвет представляет одну строку.

Вы также можете слегка изменить график, чтобы каждая линия (строка) имела свой собственный график, добавив facet_wrap, например:

df %>%
  mutate(row_number = as.factor(row_number())) %>%
  gather(columns, responses, V1:V5) %>%
  ggplot(aes(x = columns, y = responses, group = row_number, color = row_number)) +
  geom_line() + geom_point() +
  facet_wrap(~ row_number)

Выход:

enter image description here

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