facet_wrap을 사용하여 ggplot에 NSE 및 PBIAS 결과를 추가하려면 어떻게해야합니까?

구스타보 파친 카니 두라도

저는 초보자이고 시뮬레이션 된 데이터와 관찰 된 데이터의 PBIAS (Percent Bias) 및 NSE ​​(Nash-Sutcliffe Efficiency)를 계산하는 함수 (아래)를 만들었습니다. 그러나 전체 데이터 세트를 사용해서 만 이러한 테스트를 계산할 수 있습니다.

model.assess <- function(Sim, Obs) { 
  rmse = sqrt( mean( (Sim - Obs)^2, na.rm = TRUE) ) #Formula to calculate RMSE
  RSR <- rmse / sd(Obs) #object producing RSR test from the RMSE formula
  PBIAS <- 100 *(sum((Sim - Obs)/sum(Obs), na.rm =TRUE)) #object producing PBIAS test
  NSE <- 1 - sum((Obs - Sim)^2)/sum((Obs - mean(Obs))^2, na.rm =TRUE) #object producing NSE test
  stats <- print(paste0("RSR = ", sprintf("%.3f", round(RSR, digits=3)), "    PBIAS = ", sprintf("%.3f",round(PBIAS, digits=3)),"    NSE = ", sprintf("%.3f",round(NSE, digits=3))))  
  return(stats) #returns the results of the tests with 3 decimals and spacing in between

이것은 네 개의 다른 스테이션 (SNS, MRC, TLG, SJF)의 데이터 세트, 월간 스트림 흐름입니다.

StationID Date      Obs_flow    Sim_flow      Month     Year
SNS    1950-10-01   0.010170    0.030687967 October 1950-01-01      
SNS    1950-11-01   0.366260    0.416466741 November 1950-01-01     
SNS    1950-12-01   0.412210    0.496136731 December 1950-01-01     
SNS    1951-01-01   0.119520    0.182072570 January 1951-01-01      
SNS    1951-02-01   0.113480    0.142611192 February 1951-01-01     
SNS    1951-03-01   0.127090    0.176350274 March   1951-01-01  
SNS    1951-04-01   0.175120    0.193221389 April   1951-01-01      
SNS    1951-05-01   0.208940    0.275980903 May     1951-01-01  
SNS    1951-06-01   0.114420    0.144675317 June    1951-01-01      
SNS    1951-07-01   0.032280    0.018057796 July    1951-01-01  

방정식과 R 제곱을 사용하여 Obs 대 Sim의 산점도를 플롯하려면 다음을 사용했습니다.

dataset %>%
  filter(StationID == "SNS") %>%
ggplot(aes(x = Obs_flow, y = Sim_flow)) + 
   geom_point(aes(Obs_flow, Sim_flow), alpha = 0.3)+
     stat_smooth(aes(x = Obs_flow, y = Sim_flow), 
                method = "lm", se = TRUE, colour="#FC4E07", fullrange = TRUE) + 
   stat_poly_eq(formula = "y~x", 
             aes(label = paste0(..eq.label..)),  #adding the equation on the top
             parse = TRUE, label.x.npc = "center", label.y.npc = 0.97, size = 3.45, family= "Times New Roman")+
     stat_poly_eq(formula = "y~x", 
             aes(label = paste0(..rr.label..)), #adding the Rsquared at the bottom
             parse = TRUE, label.x.npc = 0.95, label.y.npc = 0.05, size = 3.45, family= "Times New Roman")+
  
  annotate("text", x = 0, y = 1.3,, label = paste0(model.assess(dataset$Sim_flow, dataset$Obs_flow)),  collapse = "\n", hjust = 0, size=2.4, family= "Times New Roman") +
  
   facet_wrap(~ Month, ncol=4,  labeller = labeller(StationID = c("MRC" = "Merced River", "SJF"= "Upper San Joaquin River", "SNS" = "Stanislaus River", "TLG" = "Tuolumne River")), scales = "fixed")

stat_poly_eq각 패싯에 대한 방정식과 Rsquared를 추가했지만 주석은 모든 패싯에 대해 동일한 숫자를 추가합니다. 각 패싯에 대해 NSE 및 PBIAS를 별도로 추가하는 방법이 있습니까? 나는 패키지를 시도했지만 HydroGOF동일한 결과를 얻었습니다. 미학을 실례합니다.여기에 이미지 설명 입력

YBS

샘플 데이터는 다른 사람들에게 도움이 될 것입니다. 향후 질문에 대해서는 링크 를 참조하십시오.

몇 가지 문제가 있습니다. 귀하의 model.assess()각면에 대한 값을 필요로하면서 기능은 하나 개의 레코드를 제공합니다. 그래서 코드를 사용하여 더미를 만들었습니다.

ll <- data.frame(Month=c(),label=c())
nM <- length(Month)
lapply(1:nM, function(i){
  a <- Sim_flow*i*i*0.5
  b <- Obs_flow*i
  m <- model.assess(a,b)
  ll <<- rbind(ll,data.frame(Month=Month[i],label=m))
})
labels <- ll

다음으로 여기에 언급 된 주석 대신 geom_label을 사용해야 합니다 . 아래 코드

ggplot(data=dataset, aes(x = Obs_flow, y = Sim_flow)) + 
  geom_point(aes(Obs_flow, Sim_flow), alpha = 0.3)+
  stat_smooth(aes(x = Obs_flow, y = Sim_flow), 
              method = "lm", se = TRUE, colour="#FC4E07", fullrange = TRUE) + 
  stat_poly_eq(formula = "y~x", 
               aes(label = paste0(..eq.label..)),  #adding the equation on the top
               parse = TRUE, label.x.npc = "center", label.y.npc = 0.97, size = 3.45, family= "Times New Roman") +
  stat_poly_eq(formula = "y~x", 
               aes(label = paste0(..rr.label..)), #adding the Rsquared at the bottom
               parse = TRUE, label.x.npc = 0.95, label.y.npc = 0.05, size = 3.45, family= "Times New Roman") +
  facet_wrap(~Month, ncol=4,  labeller = labeller(StationID = c("MRC" = "Merced River", "SJF"= "Upper San Joaquin River", "SNS" = "Stanislaus River", "TLG" = "Tuolumne River")), scales = "fixed") +
  geom_label(data = labels, aes(label=label, x = Inf, y = -Inf), 
             hjust=1, vjust=0, size=1.8,
             inherit.aes = FALSE)

다음을 제공합니다 산출

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHPMailer를 사용하여 HTML, CSS 및 PHP를 이메일에 추가하려면 어떻게해야합니까?

분류에서Dev

spring Mvc를 사용하여 jsps로 CSS 및 js 파일을 추가하려면 어떻게해야합니까?

분류에서Dev

JavaScript 및 Json을 사용하여 API에 데이터를 게시하려면 어떻게해야합니까?

분류에서Dev

facet_wrap으로 만든 플롯에 별도의 ggplot 제목을 추가하려면 어떻게해야합니까?

분류에서Dev

UILongPressGestureRecognizer를 사용하여 사용자 위치에 핀을 추가하려면 어떻게해야합니까?

분류에서Dev

certbots를 사용하여 letsencrypt에 하위 도메인을 추가하려면 어떻게해야합니까?

분류에서Dev

GnuPG를 사용하여 내 사진을 공개 키에 추가하려면 어떻게해야합니까?

분류에서Dev

진자를 사용하여 테이블에 열을 추가하려면 어떻게해야합니까?

분류에서Dev

리본 xml을 사용하여 버튼에 이미지를 추가하려면 어떻게해야합니까?

분류에서Dev

Android Studio를 사용하여 모듈에 특징을 추가하려면 어떻게해야합니까?

분류에서Dev

jQuery를 사용하여 입력 태그 내에 속성을 추가하려면 어떻게해야합니까?

분류에서Dev

closedxml을 사용하여 셀에 기호를 추가하려면 어떻게해야합니까?

분류에서Dev

sapply 및 ggplot2를 사용하여 데이터 프레임의 각 열에 대해이 플롯을 만들려면 어떻게해야합니까?

분류에서Dev

이메일 및 비밀번호로 사용자를 생성 할 때 사용자 개체에 속성을 추가하려면 어떻게해야합니까?

분류에서Dev

NSE를 사용하고 ... (줄임표)를 사용하여 표현식을 필터링하려면 어떻게해야합니까?

분류에서Dev

Microsoft Scene Understanding SDK 및 hololens2를 사용하여 Unity Scene을 플레이어의 실제 공간에 맞추려면 어떻게해야합니까?

분류에서Dev

awk를 사용하여 CSV 파일에서 두 번째 및 세 번째 열을 추출하려면 어떻게해야합니까?

분류에서Dev

e_charts ()를 사용하여 동일한 차트에서 막대 및 선 비주얼리 제이션을 결합하려면 어떻게해야합니까?

분류에서Dev

Mongoose 및 Node를 사용하여 레코드를 저장하기 전에 여러 개체 참조를 추가하려면 어떻게해야합니까?

분류에서Dev

추가 사용을 위해 js 파일 리더 결과를 변수에 저장하려면 어떻게해야합니까?

분류에서Dev

CLI를 사용하여 CentOs 8 및 7에 더 많은 언어를 추가하려면 어떻게해야합니까?

분류에서Dev

사전에 오라클 연결을 사용하여 자식 및 상위 수준 부모 정보를 모두 얻으려면 어떻게해야합니까?

분류에서Dev

awk를 사용하여 HTML 파일에서 URL을 추출하려면 어떻게해야합니까?

분류에서Dev

gunzip과 tar를 사용하여 내가 원하는 특정 디렉토리에 tar.gz 파일을 추출하려면 어떻게해야합니까?

분류에서Dev

이 유니 코드 기호 (ⓘ)를 Imagick과 함께 사용하여 이미지에 주석을 추가하려면 어떻게해야합니까?

분류에서Dev

자식에게 ID 키가있을 때 EF를 사용하여 여러 자식 엔터티를 개체에 추가하려면 어떻게해야합니까?

분류에서Dev

수율 및 범위를 사용하여 목록에서 위치와 항목을 가져 오려면 어떻게해야합니까?

분류에서Dev

PostgreSQL 및 Ruby를 사용하여 db 테이블에서 배열로 열 이름을 가져 오려면 어떻게해야합니까?

분류에서Dev

Chrome의 "시크릿"모드를 사용하여 GnomeTerminal에서 URL을 여는 추가 옵션을 추가하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    PHPMailer를 사용하여 HTML, CSS 및 PHP를 이메일에 추가하려면 어떻게해야합니까?

  2. 2

    spring Mvc를 사용하여 jsps로 CSS 및 js 파일을 추가하려면 어떻게해야합니까?

  3. 3

    JavaScript 및 Json을 사용하여 API에 데이터를 게시하려면 어떻게해야합니까?

  4. 4

    facet_wrap으로 만든 플롯에 별도의 ggplot 제목을 추가하려면 어떻게해야합니까?

  5. 5

    UILongPressGestureRecognizer를 사용하여 사용자 위치에 핀을 추가하려면 어떻게해야합니까?

  6. 6

    certbots를 사용하여 letsencrypt에 하위 도메인을 추가하려면 어떻게해야합니까?

  7. 7

    GnuPG를 사용하여 내 사진을 공개 키에 추가하려면 어떻게해야합니까?

  8. 8

    진자를 사용하여 테이블에 열을 추가하려면 어떻게해야합니까?

  9. 9

    리본 xml을 사용하여 버튼에 이미지를 추가하려면 어떻게해야합니까?

  10. 10

    Android Studio를 사용하여 모듈에 특징을 추가하려면 어떻게해야합니까?

  11. 11

    jQuery를 사용하여 입력 태그 내에 속성을 추가하려면 어떻게해야합니까?

  12. 12

    closedxml을 사용하여 셀에 기호를 추가하려면 어떻게해야합니까?

  13. 13

    sapply 및 ggplot2를 사용하여 데이터 프레임의 각 열에 대해이 플롯을 만들려면 어떻게해야합니까?

  14. 14

    이메일 및 비밀번호로 사용자를 생성 할 때 사용자 개체에 속성을 추가하려면 어떻게해야합니까?

  15. 15

    NSE를 사용하고 ... (줄임표)를 사용하여 표현식을 필터링하려면 어떻게해야합니까?

  16. 16

    Microsoft Scene Understanding SDK 및 hololens2를 사용하여 Unity Scene을 플레이어의 실제 공간에 맞추려면 어떻게해야합니까?

  17. 17

    awk를 사용하여 CSV 파일에서 두 번째 및 세 번째 열을 추출하려면 어떻게해야합니까?

  18. 18

    e_charts ()를 사용하여 동일한 차트에서 막대 및 선 비주얼리 제이션을 결합하려면 어떻게해야합니까?

  19. 19

    Mongoose 및 Node를 사용하여 레코드를 저장하기 전에 여러 개체 참조를 추가하려면 어떻게해야합니까?

  20. 20

    추가 사용을 위해 js 파일 리더 결과를 변수에 저장하려면 어떻게해야합니까?

  21. 21

    CLI를 사용하여 CentOs 8 및 7에 더 많은 언어를 추가하려면 어떻게해야합니까?

  22. 22

    사전에 오라클 연결을 사용하여 자식 및 상위 수준 부모 정보를 모두 얻으려면 어떻게해야합니까?

  23. 23

    awk를 사용하여 HTML 파일에서 URL을 추출하려면 어떻게해야합니까?

  24. 24

    gunzip과 tar를 사용하여 내가 원하는 특정 디렉토리에 tar.gz 파일을 추출하려면 어떻게해야합니까?

  25. 25

    이 유니 코드 기호 (ⓘ)를 Imagick과 함께 사용하여 이미지에 주석을 추가하려면 어떻게해야합니까?

  26. 26

    자식에게 ID 키가있을 때 EF를 사용하여 여러 자식 엔터티를 개체에 추가하려면 어떻게해야합니까?

  27. 27

    수율 및 범위를 사용하여 목록에서 위치와 항목을 가져 오려면 어떻게해야합니까?

  28. 28

    PostgreSQL 및 Ruby를 사용하여 db 테이블에서 배열로 열 이름을 가져 오려면 어떻게해야합니까?

  29. 29

    Chrome의 "시크릿"모드를 사용하여 GnomeTerminal에서 URL을 여는 추가 옵션을 추가하려면 어떻게해야합니까?

뜨겁다태그

보관