Как оно функционировало бы facet_wrap с этими данными?

У меня есть этот набор данных

Datos

Где 1,2,3,4,5,6,18953... представляют индивиды, и каждая стоимость, зарегистрированная напротив моей переменной Temp, вот то, что я хочу изобразить графически. В конце концов у меня хотел бы быть plot типа

plot

Но я не знаю, как он был бы должен организовывать мой начальный df, чтобы это получать. Какая-то идея?

1
задан 20.03.2019, 15:42
1 ответ

В этом случае нужно работать люди как факторы, чтобы облегчать ее construcciГіn grГЎfico соответствующий.

поверил, что начальные данные

nFilas <- 20
nPersonas <- 6
set.seed(20190320)

df<-data.frame(temp=seq(-3.3,14.7,length.out = nFilas))
for (i in 1:nPersonas) df[,i+1]  <- runif(nFilas, -125,900)
colnames(df)<-c("temp",1:nPersonas)
df

         temp          1          2           3         4          5          6
1  -3.3000000 749.393547  620.53022  701.876350 732.85395 675.378994  -97.00110
2  -2.3526316 111.243712  307.46048  557.621336 420.64176 336.474029  241.07638
3  -1.4052632 344.805670  753.01664  872.247881  58.67846 109.955826  425.41611
4  -0.4578947 807.501368  611.25050  -90.042860  76.60173 114.418069  478.18556
5   0.4894737 362.744458  375.33515  -67.027906  36.14731 812.593395   43.94705
6   1.4368421  -7.997008  569.20070  682.283007 706.41169 719.779506   67.65650
7   2.3842105 798.996957  486.56962  534.439616  60.96042 836.951559  324.25746
8   3.3315789 365.202166  476.65600  778.492958 259.46762 149.504419  558.08466
9   4.2789474 423.757121 -105.13022  305.615076 276.37699 675.604828  -93.02579
10  5.2263158 858.999905  888.33208  178.035627 -56.49503  31.490936  272.50199
11  6.1736842 702.225382  661.54573  468.975455  32.53351 129.200682  198.07859
12  7.1210526 788.340562  151.59768  869.736386 190.63376 840.412707  -16.24743
13  8.0684211 731.527003  105.83991  515.505558 821.80225 460.490959   24.66595
14  9.0157895 893.841653   38.50499  800.174486 394.89320 652.378358  671.82621
15  9.9631579 654.063094  782.19705 -115.509606 143.34723 -73.224599 -107.25909
16 10.9105263 306.440000  813.58694  406.473660 357.34358 632.121997   77.87745
17 11.8578947 257.475579  -70.30068  147.640960 267.72295   6.916414  209.82261
18 12.8052632 288.156559  894.87291  -96.419952 835.29815 786.817061  834.42646
19 13.7526316 873.778338   35.06122  107.650263 613.49948 231.892993  331.12362
20 14.7000000 337.672819  568.45932    5.217365 264.39315 878.271935   54.67719

Потом нужно превращать колонны personas в линии, для этого использует ее funciГіn gather из пакета tidyr

library(tidyr)

# solo las columna de las personas se convierten en filas
# en tal sentido el rango es 2:ncol(df)
longDF <- df %>% gather(persona, valor, 2:ncol(df))
longDF[1:24,]

         temp persona      valor
1  -3.3000000       1 749.393547
2  -2.3526316       1 111.243712
3  -1.4052632       1 344.805670
4  -0.4578947       1 807.501368
5   0.4894737       1 362.744458
6   1.4368421       1  -7.997008
7   2.3842105       1 798.996957
8   3.3315789       1 365.202166
9   4.2789474       1 423.757121
10  5.2263158       1 858.999905
11  6.1736842       1 702.225382
12  7.1210526       1 788.340562
13  8.0684211       1 731.527003
14  9.0157895       1 893.841653
15  9.9631579       1 654.063094
16 10.9105263       1 306.440000
17 11.8578947       1 257.475579
18 12.8052632       1 288.156559
19 13.7526316       1 873.778338
20 14.7000000       1 337.672819
21 -3.3000000       2 620.530216
22 -2.3526316       2 307.460481
23 -1.4052632       2 753.016645
24 -0.4578947       2 611.250503

И aquГ - возможно использовать lattice или ggplot2, чтобы получать grГЎfico в grid

В случае Первого serГ - в следующей формы

library(lattice)

dimFilGrid <- 2

# el operador %% me da el resto de una division
# se le emplea para que calcen la dimension del grid
dimColGrid <- (ncol(df)-ncol(df)%%dimFilGrid)/dimFilGrid

xyplot(valor~temp | factor(persona), 
       data = longDF, type='b',
       layout = c(dimColGrid,dimFilGrid)
      )

introducir la descripción de la imagen aquí

В случае ggplot, - mГЎs просто закреплять nГєmero линий grid, также facet_wrap может работать с persona как будто это был фактор, sГіlo он нужен предпочитать характер ~ для этого.

library(ggplot2)
ggplot(data=longDF , mapping=aes(x=temp,y=valor))+
    geom_line()+
    facet_wrap( ~ persona, nrow = 2)

introducir la descripción de la imagen aquí

Adicionalmente ggplot позволь начинаться есть упорядочивать grid с верхней левой части, возможно добиваться того же самого с lattice, но потребуй добавочных шагов, в этом смысле, я считаю, что это, уже он убегает в вышедший в свет вопрос оригинально.

Замечает: упоминает о том, что persona дается обработка фактора, внутри соответствующих функций, тем не менее применив str(longDF), наблюдается, что переменная persona не как таковой фактор в R основание, но использованные пакеты это превращают внутри в фактор, в эффект добивания представленных результатов.

str(longDF)

'data.frame':   120 obs. of  3 variables:
 $ temp   : num  -3.3 -2.353 -1.405 -0.458 0.489 ...
 $ persona: chr  "1" "1" "1" "1" ...
 $ valor  : num  749 111 345 808 363 ...
2
ответ дан 02.12.2019, 05:22
  • 1
    Добавьте замечание в конце концов, чтобы показывать, потому что persona - фактор несмотря на то, что str(longDF) покажет, что он типа character – Hubert Ronald 20.03.2019, 18:38
  • 2
    Большое спасибо! Инструмент gather был ключ и desconocí в, спасибо! ú ltima вещь: В моем случае я хочу изобразить 15 графически " personas" и я хотел бы, что grá ficos они появлялись в восходящей команде, но то, что он делает, состоит в том, чтобы делать мне первым 1, потом 10,11,12,2... и не 1, 2, 3. Có mo я могу делать это? – Caro 21.03.2019, 12:44
  • 3
    Привет @Caro, однажды имей data.frame, организованный с 15 personas перед тем, как использовать ggplot2, tendrí в который использовать следующее: longDF<-within (longDF, человек < - ordered (он является лично, levels = rev (sort (unique (человек))))) также я сожалею о том, что говорю, что эта expresió n он не достаточен в случае lattice, так как вышеупомянутый пакет не основывается на gramá костариканская grá ficos (gg...), взамен ggplot2 sí: ggplo2=lattice+Rbase – Hubert Ronald 21.03.2019, 14:32