AMcoder - javascript, python, java, html, php, sql

Տվյալների շրջանակների ցանկի գծագրում՝ յուրաքանչյուրում 4 փոփոխականով

data.frame-ի հատված data.frames-ի ցանկի հատված

Իմ ցուցակն այսպիսի տեսք ունի.

> dput(lapply(list1, head))
list(structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 
4L), .Dimnames = list(NULL, c("FPAR", "gpp", "LAI", "npp"))), 
    structure(c(63L, 83L, 66L, 84L, 92L, 85L, 9976L, 3318L, 9456L, 
    9435L, 9002L, 9395L, 21L, 32L, 18L, 34L, 50L, 36L, 6742L, 
    5228L, 5405L, 5136L, 5387L, 5339L), .Dim = c(6L, 4L), .Dimnames = list(
        NULL, c("FPAR", "gpp", "LAI", "npp"))), structure(c(NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 4L), .Dimnames = list(
        NULL, c("FPAR", "gpp", "LAI", "npp"))), structure(c(0L, 
    95L, 0L, 82L, 0L, 82L, 10306L, 10205L, 10306L, 10627L, 10306L, 
    10627L, 0L, 64L, 0L, 31L, 0L, 31L, 6396L, 6340L, 6396L, 6396L, 
    6396L, 6396L), .Dim = c(6L, 4L), .Dimnames = list(NULL, c("FPAR", 
    "gpp", "LAI", "npp"))), structure(c(NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    7331L, NA, NA), .Dim = c(6L, 4L), .Dimnames = list(NULL, 
        c("FPAR", "gpp", "LAI", "npp"))), structure(c(96L, 96L, 
    100L, 88L, 93L, 100L, 12734L, 12215L, 11383L, 11446L, 12672L, 
    11531L, 61L, 61L, 70L, 40L, 58L, 70L, 7807L, 7357L, 7695L, 
    6400L, 6009L, 7735L), .Dim = c(6L, 4L), .Dimnames = list(
        NULL, c("FPAR", "gpp", "LAI", "npp"))), structure(c(95L, 
    95L, 96L, 96L, 96L, 95L, 10829L, 10829L, 9652L, 10321L, 9652L, 
    10829L, 61L, 61L, 62L, 65L, 62L, 61L, 5144L, 5144L, 5188L, 
    5422L, 5188L, 5144L), .Dim = c(6L, 4L), .Dimnames = list(
        NULL, c("FPAR", "gpp", "LAI", "npp"))), structure(c(NA, 
    NA, 87L, 63L, 87L, 87L, NA, NA, 7891L, 7891L, 0L, 7891L, 
    NA, NA, 46L, 19L, 46L, 46L, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 
    4L), .Dimnames = list(NULL, c("FPAR", "gpp", "LAI", "npp"
    ))), structure(c(100L, 100L, 100L, 78L, 100L, 100L, 4011L, 
    4011L, 4112L, 4306L, 3664L, 4112L, 70L, 70L, 70L, 21L, 70L, 
    70L, 2253L, 2425L, 2479L, NA, 2253L, 2253L), .Dim = c(6L, 
    4L), .Dimnames = list(NULL, c("FPAR", "gpp", "LAI", "npp"
    ))), structure(c(83L, 87L, 71L, NA, 0L, 82L, 5627L, 6626L, 
    5862L, NA, 6963L, 5541L, 29L, 37L, 16L, NA, 0L, 28L, 3877L, 
    3695L, 3635L, 1642L, 3692L, 3644L), .Dim = c(6L, 4L), .Dimnames = list(
        NULL, c("FPAR", "gpp", "LAI", "npp"))), structure(c(88L, 
    89L, 61L, NA, 0L, 88L, 6132L, 5636L, 6166L, NA, 6510L, 6502L, 
    49L, 51L, 18L, NA, 0L, 50L, 3413L, 3788L, 3519L, NA, 3463L, 
    3755L), .Dim = c(6L, 4L), .Dimnames = list(NULL, c("FPAR", 
    "gpp", "LAI", "npp"))))

Այսպիսով, ես փորձում եմ արդյունավետ կերպով գծել ցրված գծապատկերներ 1 փոփոխականի (FPAR) և 2-4 փոփոխականների միջև (gpp, LAI, npp) ցուցակի 11 տվյալների շրջանակների համար: Ես կցել եմ մի հատված, թե ինչ տեսք ունի իմ ցուցակը:

Սա այն է, ինչ ես եկել եմ մինչ այժմ, բայց դա չի աշխատում:

library(ggplot2)
scatterplot <- function(yvar){
  ggplot(list1, aes_(x=~age, y=as.name(yvar))) + 
    geom_point() +
    facet_wrap(~dataframe)
}
lapply(list1, scatterplot)

Ես առաջին անգամ եմ աշխատում ցուցակների և ggplot-ի հետ, այնպես որ ես մի փոքր խրվեցի:

01.11.2018

  • Կարո՞ղ եք ցույց տալ ձեր ցուցակի նվազագույն օրինակ ? Արդյո՞ք նրանք կիսում են նույն սյունակների անունները: Եթե ​​այո, օգտագործեք purrr::bind_cols-ը և դրա .id արգումենտը՝ տվյալների մեկ շրջանակ ստեղծելու համար: 01.11.2018
  • Ես ավելացրել եմ մի հատված, որն իմ կարծիքով ամենաարագ ճանապարհն է: նրանք ունեն տարբեր սյունակների անուններ, քանի որ դրանք տարբեր ցուցանիշներ են ներկայացնում: 01.11.2018
  • Ավելի լավ է կիսվեք dput(lapply(list1, head))ով, ոչ թե նկարներով: 01.11.2018
  • Լավ, շնորհակալություն: Ավելացրի, բայց բավականին երկար է :) 01.11.2018
  • Շատ ավելի լավ! Ձեր տվյալների շրջանակները կամ մատրիցները և իրականում կիսում են նույն սյունակների անունները: Որտե՞ղ է ձեր հարցի վերնագրում նշած հինգերորդ փոփոխականը: Եվ ամենակարևորը. ի՞նչ եք ուզում դնել x առանցքի վրա, իսկ ինչը՝ y առանցքի և այլն: 01.11.2018
  • Շնորհակալություն Ես փորձում եմ գծել FPAR x առանցքի վրա, իսկ հետո երեք առանձին սյուժե gpp, LAI և npp y առանցքի վրա: Բոլոր 11 data.frames-ի համար: Եթե ​​դա իմաստ ունի 01.11.2018

Պատասխանները:


1

Ահա մի միջոց, որը դուք կարող եք դա անել:

library(tidyverse)
list1 %>% 
  map(., as_data_frame) %>% 
  bind_rows(., .id = "dataframe") %>%
  gather(., key, value, gpp:npp) %>% 
  mutate(dataframe = factor(dataframe, levels = unique(dataframe))) %>% 
  ggplot(., aes(FPAR, value, col = key)) +
  geom_point() +
  facet_wrap(. ~ dataframe, ncol = 3)

Զգուշացում. Հեռացվել է բացակայող արժեքներ պարունակող 71 տող (geom_point):

մուտքագրեք պատկերի նկարագրությունը այստեղ


Դուք կարող եք կարդալ.

01.11.2018
  • Խմբագրել. ես տառասխալ եմ արել, կներեք։ Սա աշխատում է, չնայած ես գաղափար չունեմ, թե ինչպես: Այսպիսով, դա կուսումնասիրվի, շատ շնորհակալություն օգնության համար: 01.11.2018
  • @Gurt. Ուրախ եմ, որ ստացվեց: Ո՞ր մասերը չես հասկանում: Ես կարող եմ խմբագրել և ինչ-որ բացատրություն տալ: 01.11.2018
  • .-ը ներկայացնում է այն տվյալները, որոնք դուք օգտագործում եք ֆունկցիայի մեջ: Այսպիսով, այո, այն ներկայացնում է ձեր ցուցակը map-ում և bind_rows-ում: Այն բանից հետո, երբ դուք զանգահարեցիք bind_rows, մենք գործ ունենք տվյալների շրջանակի հետ, այլ ոչ թե ցուցակի: Եթե ​​ցանկանում եք, կարող եք բաց թողնել .ը: Այստեղ կարող եք ավելին կարդալ դրա մասին՝ magrittr.tidyverse.org/#the-argument-placeholder< /ա>... 01.11.2018
  • ... mutate ֆունկցիան է dplyr փաթեթից, որն այստեղ օգտագործվում է dataframe սյունակը գործակցի փոխակերպելու համար: Սա օգտակար է, եթե ցանկանում եք նշել փոփոխականի հերթականությունը: Եթե ​​դուք բաց թողնեիք այդ տողը, կտեսնեք, որ ggplot-ը ձեր վահանակները կպատվիրի այսպես՝ 1 10 11 2 3 4 5 6 7 8 9 վերևից ձախից ներքև աջ: 01.11.2018

  • 2

    մուտքագրեք պատկերի նկարագրությունը այստեղ

    Սա չի պատասխանում ձեր հարցին, բայց կարող է ձեզ մի փոքր առաջ մղել: Դուք պետք է մտածեք ձեր գործառույթի մուտքերի մասին: Եթե ​​list1data.frames-ի ցուցակն է, ապա ձեր scatterplot ֆունկցիայի մուտքագրումը կլինի data.frame: Կախված ձեր data.frame կառուցվածքից, ձեր գործառույթը կարող է նման լինել.

    df <- data.frame(a = rnorm(n = 20),
                     b = rnorm(n = 20),
                     d = c(rep('first', 10),
                           rep('sec', 10)))
    df_l <- list(df, df)
    
    scatterplot <- function(df){
      ggplot(df, aes(x = a, y = b)) + 
               geom_point() +
               facet_wrap(~d)
    } 
    
    lapply(df_l, scatterplot)
    

    հաջողություն :)

    01.11.2018
  • Շնորհակալություն Բայց ես դեռ այնքան էլ չեմ հասկանում, թե ինչ է անում facet_wrap-ը: Ես օրերով և ամիսներով օրինակ եմ տեսել, բայց ես կցանկանայի, որ իմ սյուժեները խմբավորվեին ըստ data.frame-ի: 01.11.2018
  • facet_wrap-ը սյունակի հիման վրա ստեղծում է ենթահողեր մեկ data.frame-ի համար: ggplot2 փաստաթղթերը բավականին լավ են բացատրելու և օրինակներով ggplot2.tidyverse.org/reference/facet_wrap.html< /ա>. Նաև նշեք, որ lapply-ի օգտագործումը հանգեցնում է երկու սյուժեի, որոնցից յուրաքանչյուրը ունի 2 ենթահող: 01.11.2018
  • Փաստորեն, փորձելով ձեր պատասխանը, սա չի աշխատի իմ տվյալների բազայի համար: Ես հալեցի իմ data.frames-ից մեկը, բայց հետո FPAR-ը հայտնվում է նույն սյունակում, ինչ իմ մյուս փոփոխականները 01.11.2018
  • Ստուգեք փաստաթղթերը հալվելու համար: Հիշողությունից կարծում եմ, որ ձեզ պետք է melt(df, id.var = "FPAR") 01.11.2018
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..