fdcu ylim не работает в пакете графиков: hydroTSM - логарифмическая ось Y

Я пытаюсь построить кривую продолжительности потока с помощью пакета hydroTSM, используя функцию fdcu.matrix. К сожалению, мне не удается увеличить или уменьшить длину оси Y. Я попробовал это с ylim=c(lownumber,highnumber).

Когда это не сработало, я попытался скопировать и вставить пакет в R, чтобы запустить его как функцию и настроить... но, к сожалению, fdcu.matrix не запускается без require(hydroTSM) .

(доступно по адресу https://github.com/cran/hydroTSM/blob/master/R/fdcu.R)

как я могу вручную или автоматически настроить ylim на диапазон данных ..?

Это часть моей матрицы данных:

вывод(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,45, 6,372, 6,372, 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,2544, 7,09, 7,008, 7,102, 7,588, 7,42, 7,25444, 7,098, 7,187, 7, 6,847, 6,767, 6,687, 6,687, 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,488, 7,588, 7,588, 7,588, 7,588, 7,488, 7,588, 7,588, 7,588, 7,588, 7,488, 7,588, 7,588, 7,588, 7,588, 7,588, 7,588, 7,588, 7,588, 7, 8.631, 8.189, 7.673, 7.42, 7.254, 7.008, 7.008, 17.397, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, НП, 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)

введите здесь описание изображения


person T. BruceLee    schedule 24.11.2016    source источник


Ответы (1)


Я чувствую, что это ошибка. Я бы порекомендовал вам связаться с разработчиком. Когда fdcu.matrix() использует в алгоритме fdcu(), fdcu.matrix() не передает информацию от ylim до fdcu(). Вы можете легко изменить fdcu.matrix(), скопировав исходный код и удалив только один термин.

Подготовка
Запустите fdcu.matrix и скопируйте результат (т. е. исходный код).

Создайте свою функцию (почти все вставлено)
fdcu.matrix2 <- ""paste"" и удалите аргумент, ylim.

for reference
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!!
example
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.

введите здесь описание изображения

person cuttlefish44    schedule 24.11.2016