2

次のデータを使用します。

$cat spike.csv
time,ts,count
2013-04-30 23:58:55,1367366335,32
2013-04-30 23:58:57,1367366337,664
2013-04-30 23:59:03,1367366343,4892
2013-04-30 23:59:04,1367366344,5185
2013-04-30 23:59:09,1367366349,4548
2013-04-30 23:59:10,1367366350,4154
2013-04-30 23:59:22,1367366362,1750
2013-04-30 23:59:23,1367366363,1720
2013-04-30 23:59:24,1367366364,1624
2013-04-30 23:59:32,1367366372,1152
2013-04-30 23:59:33,1367366373,1217
2013-04-30 23:59:59,1367366399,704
2013-05-01 00:00:00,1367366400,642
2013-05-01 00:00:01,1367366401,688
2013-05-01 00:00:02,1367366402,682
2013-05-01 00:00:03,1367366403,660
2013-05-01 00:00:09,1367366409,594
2013-05-01 00:00:10,1367366410,554
2013-05-01 00:02:09,1367366529,259
2013-05-01 00:02:10,1367366530,281
2013-05-01 00:02:11,1367366531,242
2013-05-01 00:02:12,1367366532,280
2013-05-01 00:02:25,1367366545,252
2013-05-01 00:02:26,1367366546,273

R を使用して、時間列の POSIXct オブジェクトを作成します。

>spike<-read.delim("NEED/stack.csv",sep=",")
>spike$time<-as.POSIXct(spike$time, format='%Y-%m-%d %H:%M:%S')

次に、ggplot を使用してデータをグラフ化します。

>ggplot(spike,aes(x=time,y=count))+
   geom_point(size=3)+
   geom_point(size=2,color="cyan")+
   geom_line()+
   theme(axis.text.x = element_text(siz=10))+
   xlab("Time (mins)")

ここに画像の説明を入力

x 軸に特に 1 分間隔でブレークを設定したいのですが、00:00 未満の値については、分単位で負の値を表示したいと考えています。推奨される休憩: -00:02、-00:01、00:00、00:01、00:002。どんな提案でも大歓迎です。考え?

4

3 に答える 3

1

時間をプロットするのではなく、時間差/期間をプロットする必要があることに注意してください。これはまったく異なるものです。

spike$timediff <- as.numeric(difftime(spike$time,
                                      as.POSIXct("2013-05-01 00:00:00", format='%Y-%m-%d %H:%M:%S'),
                                      units="mins"))

ggplot(spike,aes(x=timediff,y=count))+
  geom_point(size=3)+
  geom_point(size=2,color="cyan")+
  geom_line()+
  theme(axis.text.x = element_text(siz=10))+
  xlab("Time (mins)")
于 2013-07-01T09:14:32.187 に答える
0

次のようなものを使用して、一連の xlab 値を作成できます。

x <- format(as.POSIXct(seq(-3600,0,60),origin="2012-12-31 0:00:00"),"%H:%M")
negx <- rev(paste0("-",x))
c(negx[1:length(negx)-1],x)
于 2013-07-01T08:05:19.243 に答える
0

他の人が述べたように、間隔または期間を日時として表現しようとします。 ggplot2対処方法がわからないdifftime(多分私が間違っているかもしれません)ので、私の考えは、データをそのまま(カウント対時間)プロットし、カスタムフォーマッタを使用して日時軸をフォーマットすることです。

formatter 内で、特定の起点までの間隔を計算し、間隔の符号に従って時刻をフォーマットします。

ここに画像の説明を入力

## origin :a reference date 
## forma  :you can give here any date format 
negative_date_format <- function (origin,forma = "%H:%M"){
  function(x) {
    x <- difftime(x,origin,units='secs')
    y <- DF$time[13] + abs(x)
    mapply(format,y, ifelse(sign(x) >= 0, forma , 
             paste0("[",forma,"]"))) ## or paste0("-",forma) to get -00:01 
  }
}

ggplot(DF,aes(x=time,y=count))+
  geom_point(size=3)+
  geom_point(size=2,color="cyan")+
  geom_line()+
  theme(axis.text.x = element_text(siz=15))+
  scale_x_datetime(labels = negative_date_format(origin=DF$time[13],forma = "%H:%M"))+
  xlab("Time (mins)")
于 2013-07-01T10:46:58.577 に答える