簡體   English   中英

如何更改 plot.zoo plot 中的(數量)x 軸刻度? (軸()失敗)

[英]How to change the (number of) x-axis ticks in a plot.zoo plot? (axis() fails)

以下時間序列 plot 和plot.zoo()顯示了奇怪數量的(只有一個)x 軸刻度。 如何說服plot.zoo()顯示更多的 x 軸刻度?

## Create a dummy time series
library(xts)
start <- as.Date("2020-04-01")
end <- as.Date("2021-06-02")
dat <- seq(start, end, length.out = 226)
set.seed(271)
ts <- xts((1:226) + rnorm(226, sd = 1/3), order.by = dat)
plot.zoo(ts) # => only one x-axis tick displayed

我嘗試了通常的方法來更改 x 軸,但由於某種原因 (?) axis()在這里不受尊重:

## Trial
plot.zoo(ts, xaxt = "n")
ticks <- axTicksByTime(index(ts))
labels <- names(ticks)
axis(1, at = ticks, labels = labels) # => no x-axis ticks displayed

如果您需要更多詳細信息,請告訴我。

這是基於標准plot()的版本:

plot(as.numeric(ts), type = "l", xaxt = "n")
ticks <- axTicksByTime(index(ts), format.labels = "%Y-%m-%d")
labels <- names(ticks)
axis(1, at = ticks, labels = labels)

還有一個更好的:

plot(as.numeric(ts), type = "l", xaxt = "n", xlab = "", ylab = "ts")
ticks <- axTicksByTime(index(ts), format.labels = "%Y-%m")
labels <- names(ticks)
axis(1, at = ticks, labels = labels, las = 2)

問題中的代碼有幾個問題:

  • 問題中的代碼調用plot.zoo直接調用 zoo 方法。 一般來說,代碼應該調用泛型並讓它分派方法,而不是直接調用方法。 (必須直接調用該方法的主要情況是泛型出現在當前未加載的不同 package 中;但是, plot不是這種情況,因為它是基礎 ZE1E1D3D40573127E9DAF1283 的一部分。)

  • ?axTicksByTime這個 function 是為內部使用而編寫的

  • 如果您仍然想使用axTicksByTime ,請注意它將索引返回到時間向量而不是時間本身。 這就是為什么當問題使用axis命令時什么都沒有出現。

如果您仍然想使用axTicksByTime並將其與plot的 zoo 方法一起使用,那么可以這樣做。

plot(as.zoo(ts), xaxt = "n")
ticks <- axTicksByTime(ts, format = "%Y %m")
labels <- names(ticks)
axis(1, at = time(ts)[ticks], labels = labels) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM