2016-11-23 64 views
0

作爲一名gnuplot用戶多年來,我將絕望於R嘗試將網格的基於時間的值與x軸標籤對齊,即對齊某些「合理」倍數的人的時間(分鐘,小時,天等)。在gnuplot的是或多或少自動...對齊R中的時間網格

例如,我有這些時間值(我還是沒找到如何使用dump()得當,所以沒有測量數據的一個簡單的例子):

> range(perf$time) 
[1] "2016-11-22 02:26:02 CET" "2016-11-22 04:02:12 CET" 
> length(perf$time) 
[1] 49 
> plot(perf$time, 1:length(perf$time)) 
> grid() 
> 

繪圖窗口如下所示: R plot window with time-based mis-aligned grid 因此,您會看到「3:00」與網格線匹配,但沒有其他值。我試圖使行數匹配,但無法正確對齊。沒有簡單的解決方案嗎?

「將日期標記放置在網格上」的解決方案沒有使用grid()grid()也沒用?

+0

無「沿日期刻度線放置網格」是一個「優雅」溶液IMHO –

+0

使用'接受的答案grid' – Danh

回答

0

如果您使用時間相關數據,我建議您使用文本包。它使得所有的格式都開箱即用。

library(xts) 
perf.xts <- xts(1:length(perf$time), perf$time) 
plot(perf.xts, type="p") 

沒有xts包,你可以通過一些小技巧來解決問題。你需要壓制X網格。 POSIXct類的時間是大整數,我認爲grid()使用這些數字來計算行的位置。如果您使用POSIXct類的時間,下面的示例工作。 (對於其他時間類找到軸的不同的方法。)在答案

plot(perf$time, 1:length(perf$time)) 
grid(nx = NA, ny = NULL) 
axis.POSIXct(1, perf$time, tck=1, lty = "dotted", col = "lightgray") 
+0

對不起,但不得不爲網格輸入明確的數據是一個簡單的解決方案,就像手動添加座標軸一樣。是不是有一個優雅的解決方案(適用於基地)? –

+0

@Windl你是否厭倦了第一個解決方案?這絕對是自動的。您需要將您的數據(可能是data.frame)轉換爲xts。你沒有給出一個示例數據集,但值得注意的是[它可以與數字列一起工作。](http://stackoverflow.com/questions/6550482/convert-data-frame-to-xts-object-and-preserve-類型) – kaliczp

+0

@Windl啊!對不起,我修改了基本圖形的解決方案。試試看!或者你可以在[重複問題]中看到不同的解決方案(http://stackoverflow.com/questions/9119323/placing-the-grid-along-date-tickmarks)。 – kaliczp