r - fdcu ylim 在绘图包 : hydroTSM - logaritmic y-axis 中不起作用

标签 r plot graph yaxis

我正在尝试使用fdcu.matrix函数,使用HydroTSM包绘制流量持续时间曲线。不幸的是,我无法增加或减少 y 轴长度。我用ylim=c(lownumber,highnumber)尝试过。

当这不起作用时,我尝试将包复制粘贴到 R 中,以便我可以将其作为函数运行并调整它...但不幸的是,如果没有 require 则 fdcu.matrix 无法运行(HydroTSM)

(可在 https://github.com/cran/hydroTSM/blob/master/R/fdcu.R 获取)

如何手动或自动将 ylim 调整到数据范围..?

这是我的数据矩阵的一部分:

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

structure(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.008, 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)

enter image description here

最佳答案

我觉得这是一个错误。我建议您联系开发商。当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

关于r - fdcu ylim 在绘图包 : hydroTSM - logaritmic y-axis 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40777239/

相关文章:

python:如何通过NetworkX获得度分布的二阶矩

algorithm - 从具有 2 个节点的二叉搜索树中删除一个节点,是否可以使用不同的方法?

r - 如何使用 Dplyr 的 Summarize 和 which() 来查找最小值/最大值

python - 使用 HoloViews+Bokeh 绘制连接到 HeatMap 的高斯

r - 我可以从 R Tools for Visual Studio 中运行 Shiny 应用程序吗

给定分箱数据的python绘制简单直方图

matlab - 绘制没有显式变量名的匿名函数

java - 仅显示 MPAndroidChart 中的部分值

python - 如何将保存为 RData 的数据框从 R 导入到 pandas?

r - 从R中的字符串中提取特定关键字