我正在尝试使用 fdcu.matrix 函数绘制包 hydroTSM 的流量持续时间曲线。不幸的是,我无法增加或减少y轴长度。我用 ylim = c(lownumber,highnumber)尝试了它。
如果这不起作用我试图复制粘贴R中的包,这样我就可以将它作为一个函数运行并调整它...但是fdcu.matrix很遗憾没有 require运行(hydroTSM)。
(可在https://github.com/cran/hydroTSM/blob/master/R/fdcu.R获得)
如何手动或自动调整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.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.254, 7.09,7.008,6.927,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.42,7.42,8.811, 9.927,8.631,8.189,7.673,7.42,7.254,7.007,7.008,17.397, NA,NA,NA,NA,NA,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)
答案 0 :(得分: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.