6

次のデータがあります。

x=strptime(20010101:20010110)
y=1:10
z=data.frame(x,y)

だから私のデータはこれです:

            x  y
1  2001-01-01  1
2  2001-01-02  2
3  2001-01-03  3
4  2001-01-04  4
5  2001-01-05  5
6  2001-01-06  6
7  2001-01-07  7
8  2001-01-08  8
9  2001-01-09  9
10 2001-01-10 10

以下を使用してベースでプロットを作成する場合:

plot(x,y)
grid(NULL,NULL)

垂直グリッドが日付の目盛りと一致しません。これは非常に単純な問題のように思えますが、これに対する解決策はどこにも見つかりませんでした。これを行う必要のないベースを使用して、垂直グリッドを日付の目盛りに合わせる方法はありますか:

abline(v=as.numeric(strptime(c(20010102,20010104,20010106,20010108,20010110),'%Y%m%d')))

日付の異なるプロットがたくさんありますが、できればベースを使用して、これを可能な限り自動化したいと考えています。

4

4 に答える 4

7

この関数axisは、軸、目盛り、およびラベルを描画し、目盛りの位置をベクトルとして返します。

データがあるのでDate、これを行うために を使用する必要がありaxis.Date、次に を使用ablineしてグリッドをプロットします。

z=data.frame(
  x=seq(as.Date("2001-01-01"), by="+1 month", length.out=10)
  y=1:10
)
plot(y~x, data=z)
abline(v=axis.Date(1, z$x), col="grey80")

ここに画像の説明を入力

于 2012-02-02T21:22:46.967 に答える
3

ablinePOSIXlt ベクトルから (strptime 経由で) 日付ティックを抽出できます。

x=strptime(20010101:20010110,format="%Y%m%d")
y=1:10

plot(x,y)
grid(nx=NA, ny=NULL)
abline(v=axis.POSIXct(1, x=pretty(x)),col = "lightgray", lty = "dotted", lwd = par("lwd"))

水平グリッドと垂直グリッドの両方を追加する独自の関数を作成することをお勧めします。

my.grid <-function(){
grid(nx=NA, ny=NULL)
abline(v=axis.POSIXct(1, x=pretty(x)),col = "lightgray", lty = "dotted", lwd =
par("lwd"))
}

plot(x,y)
my.grid()
于 2012-02-02T21:39:53.800 に答える
3

ヘルプ ファイルにある?gridように、「さらに微調整が必​​要な場合は、abline(h = ., v = .)直接使用できます」。少し手間がかかりますが、大したことではありません。頻繁に使用する場合は、簡単に関数にまとめることができます。

これを行う1つの方法は次のとおりです。

plot(x,y)
abline(v = pretty(extendrange(z$x)), 
       h = pretty(extendrange(z$y)),
       col = 'lightgrey', lty = "dotted")
points(x,y, pch=16)

ここに画像の説明を入力

于 2012-02-02T21:24:43.797 に答える
1

私は基本プロットの複雑さに慣れていません。しかし、ggplot はこれを効果的に行います。

x <- strptime(20010101:20010110, format='%Y%m%d')
y <- 1:10
z <- data.frame(x, y)
qplot(x,y,data=z,'point')
于 2012-02-02T20:52:41.583 に答える