Как я могу построить весь масштабированный набор данных по одной строке на строку? - PullRequest
0 голосов
/ 04 июня 2019

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

Я хочу, чтобы мои шесть альтернатив были в качестве значений по оси X, и их стандартизированное значение по оси Y.

Пример моего набора данных выглядит так:

    fish   rice   meet   milk

   1   2.3    3.4   1.4     1.3
   1   2.6    3.5   2.4     2.4
   1   4.3    1.9   3.3     3.1
   1  1.3    2.4   4.4     9.3
   2  1.3    3.4   4.1     3.4
   2   3.3    2.9   3.3     2.1
   2   4.5    3.9   3.3     3.1
   2  1.4    2.4   4.4     9.3

, где первый столбец индивидуален, в этом примере у нас было 2 человека Теперь я хочу нарисовать кривую для каждого ряда, чтобы по оси X у меня (рыба, рис встречались с молоком), а по оси Y у меня были эти числа.

Например, первая кривая образована соединением точек 2.3, 3.4, 1.4, 1.3 по оси y

Ответы [ 2 ]

3 голосов
/ 04 июня 2019

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

library(tidyverse)

df1 = df %>%
    rowid_to_column('row') %>%
    gather(key, value, -row)

head(df1)
  row  key value
1   1 fish   2.3
2   2 fish   2.6
3   3 fish   4.3
4   4 fish   1.3
5   1 rice   3.4
6   2 rice   3.5

# group is needed to tell ggplot which points to connect in each line

ggplot(df1, aes(x = key, y = value, color = factor(row), group = row))  +
    geom_line()

enter image description here

2 голосов
/ 04 июня 2019

Я также нашел этот базовый подход R, который был легким и быстрым:

matplot(t(df), type="l", xaxt="n")
axis(1, seq_along(df), names(df))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...