У меня есть этот набор данных
Где 1,2,3,4,5,6,18953... представляют индивиды, и каждая стоимость, зарегистрированная напротив моей переменной Temp, вот то, что я хочу изобразить графически. В конце концов у меня хотел бы быть plot типа
Но я не знаю, как он был бы должен организовывать мой начальный df, чтобы это получать. Какая-то идея?
В этом случае нужно работать люди как факторы, чтобы облегчать ее 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)
)
В случае 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)
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 ...
persona
- фактор несмотря на то, чтоstr(longDF)
покажет, что он типаcharacter
– Hubert Ronald 20.03.2019, 18:38data.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