R base plot() 函数:我可以控制 R base 中这 3 个绘图的 y 轴范围和 y 轴刻度数方向吗?

R base plot() function: Can I control the y-axis ranges and y-axis tick number orientation for each of these 3 plots in R base?

我可以控制 3 个 y 轴标签,但我也想控制 3 个 y 轴范围中的每一个。这可能吗?我试过 'ylim',但它似乎只接受一个范围。

此外,如果可能的话,我想将 y 轴刻度数字调成水平方向,这样它们就不会相互重叠。

感谢任何意见!

library(zoo)
set.seed(42)
dat <- data.frame(date=seq.Date(as.Date("2020-12-01"), as.Date("2020-12-31"), "day"),
                  x=runif(31,0,5000),
                  y=runif(31,0,100),
                  z=runif(31,0,20))
rownames(dat) <- dat[,1]
dat <- dat[,-1]

plot(as.zoo(dat), ylab=c("label1","label2","label3"))
plot(as.zoo(dat), ylab=c("label1","label2","label3"), ylim=c(c(0,6000),c(0,150),c(0,50)))

click here to see example

您可能想单独绘制三个数据,然后使用包 patchwork 到 assemble 它们:

plot1 <- plot(...)
plot2 <- plot(...)
plot3 <- plot(...)
plot1 + plot2 + plot3 + patchwork::plot_layout(nrow = ..., ncol = ...)

因此,您可以为每个地块安排 ylim :

plot1 <- plot(..., ylim = c(0,6000))
plot2 <- plot(..., ylim = c(0,150))
plot3 <- plot(..., ylim = c(0,50))

这里有几个问题:

  • 请注意,这是从通用 plot
  • 调度 plot.zoo
  • as.zoo 应该是 read.zoo 并且 zoo 对象中的索引不是行名。有关动物园对象的更多信息,请参阅 ?zoo 和动物园 vignette(package = "zoo") 附带的小插图,或在 zoo CRAN page 上找到它们的链接。请参阅 ?read.zoovignette("zoo-read", package = "zoo") 了解更多关于 read.zoo 的信息。
  • 一般来说,如果不覆盖变量,处理代码会更容易。下面我们使用 z 来表示动物园对象而不是破坏原始数据。
  • 要获得多个 ylim 集合,它们必须作为成对列表传递。问题中的代码传递了一个包含 6 个值的简单向量。有关详细信息,请参阅 ?plot.zoo
  • 添加las=1。有关详细信息,请参阅 ?par

更正,我们有

library(zoo)

set.seed(42)
dat <- data.frame(date = seq.Date(as.Date("2020-12-01"), as.Date("2020-12-31"), "day"),
                  x = runif(31, 0, 5000),
                  y = runif(31, 0, 100),
                  z = runif(31, 0, 20))   
z <- read.zoo(dat)

ylab <- c("label1", "label2", "label3")
ylim <- list(c(0, 6000), c(0, 150), c(0, 50))
plot(z, ylab = ylab, ylim = ylim, las = 1)

给予: