2016-11-24 3 views
1

을 나는 fdcu.matrix 기능을 사용하여 패키지 hydroTSM와 유량 지속 곡선을 그릴 노력하고 있어요. 불행히도 y 축 길이를 늘리거나 줄이는 것은 불가능합니다. 나는 ylim = c (lownumber, highnumber)으로 시도했다.fdcu의 ylim 플롯 패키지에 작동하지 않습니다 hydroTSM을 - logaritmic y 축

이 기능이 작동하지 않으면 패키지를 R에 붙여 넣어 복사하여 기능으로 조정할 수 있지만 불행히도 fdcu.matrix는 필요없이 실행되지 않습니다. 하이드로 TSM). (https://github.com/cran/hydroTSM/blob/master/R/fdcu.R에서 구입 가능)

는 어떻게 수동 또는 자동으로 datarange에 ylim을 조정할 수 있습니다 ..?

이 매트릭스 내 데이터의 일부 :

dput (m.fdc01 [1 : 20,1 : 5])

구조 (C (1, 2, 3, 4, 5 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 6.45, 6.45,6.45,6.35,6.322,6.322,6.529, 7.09, 3.8 , 8.015, 8.277, 9.361, 10.41, 10.705, 9.548, 8.811, 9.176, 8.631, 8.542, 8.365, 8.189, 8.102, 7.588, 7.42, 7.254, 7.09, 7.008,6.927,6.847,6.767,6.6687.6687,6.687 , 6.687, 6.847, 6.927, 1.008, 6.927, 7.09, 7.758, 8.277, 7 929, 7.843, 7.673, 7.588, 7.588, 7.588, 7.588, 7.588, 7.42, 7.42, 8.811, 9.927, 8.631, 8.189, 7.673, 7.42, 7.254, 7.008, 7.008, 17.397, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16.782, 15.82) .Dim = c (20L, 5L), .Dimnames = list (NULL , C ("DAYOFYEAR", "1970", "1971", "1972", "1973")

# Plot with multiple flow duration curves & legend: 

require(hydroTSM) 
fdcu.matrix(m.fdc01[,-1], lband=m.fdc01[,-1], uband=m.fdc01[,-1], sim=m.fdc[,-1], plot=TRUE, 
     main ="FDC station 1LA04:1970-1978", xlab="% Time flow equalled or exceeded", 
     ylab="Q, [m3/s]", ylim=c(1,50),yat=c(0.01,0.02,0.05, 0.1,0.2,0.5, 1,2,5,10,20,50,100), 
     bands.col = "white", col=col_matsel, lwd=mat_lwd,leg.txt="", 
     leg.cex=0.5,leg.pos="auto",cex.axis=1,thr.shw=FALSE) 
legend("bottomleft",legendtextsel,col=col_matsel, lwd=4, y.intersp=1,bty="n",cex=1) 

enter image description here

답변

1

나는 이것이 버그라고 생각)). 개발자에게 문의하는 것이 좋습니다. fdcu.matrix()이 알고리즘에서 fdcu()을 사용하는 경우 fdcu.matrix()ylim의 정보를 fdcu()에 제공하지 않습니다. 원래 코드를 복사하고 하나의 용어 만 삭제하면 수정 코드 fdcu.matrix()을 쉽게 만들 수 있습니다.

제조
실행 fdcu.matrix 출력 복사 (즉, 원래의 코드).


는 (거의 모든 붙여) 함수

fdcu.matrix2 <- ""paste""을 확인하고, ylim을 인수 삭제합니다. 참조

fdcu.matrix2 <- 
function (x, lband, uband, sim, lQ.thr = 0.7, hQ.thr = 0.2, plot = TRUE, 
    log = "y", main = "Flow Duration Curve", xlab = "% Time flow equalled or exceeded", 
    ylab = "Q, [m3/s]", ylim, yat = c(0.01, 0.1, 1), xat = c(0.01, ... 
         ^^^^^ delete!! 
require(hydroTSM) 

fdcu.matrix2(m.fdc01[,-1], lband=m.fdc01[,-1], uband=m.fdc01[,-1], sim=m.fdc01[,-1], 
     plot=TRUE, main ="fdcu.matrix2_test", xlab="xlab", ylab="Q, [m3/s]", 
     ylim=c(1,50), yat=c(0.01,0.02,0.05, 0.1,0.2,0.5, 1,2,5,10,20,50), 
     bands.col="white", leg.txt="", leg.cex=0.5, leg.pos="auto", 
     cex.axis=0.7, thr.shw=FALSE) 

    # [note] yat and pretty(ylim) are ylabels 

    # [note2 (edited)] 
    # when log = "y", ylim[1] is disregarded and 0.01 is used instead of it. 

enter image description here

위한