3

私は何かをする方法を理解しようとしていますがggplot2、それは本当に簡単なRはずです。それはとても簡単です...私は一生それを行う方法を理解することができません. 私は答えがggplotのドキュメントで私を見つめていると確信していますが、私はそれを見つけることができません. そう。私はここにいます。

私はよく次のようなデータセットを持っています:

tdf <- data.frame('datetime' = seq(from=as.POSIXct('2012-01-01 00:00:00'), 
             to=as.POSIXct('2012-01-31 23:59:59'), by=1))
tdf$variable <- rep(c('a','b','c'), length.out=length(tdf$datetime))
tdf$value <- sample(1:10, length(tdf$datetime), replace=T)
> head(tdf)
             datetime variable value
1 2012-01-01 00:00:00        a     7
2 2012-01-01 00:00:01        b     3
3 2012-01-01 00:00:02        c     7
4 2012-01-01 00:00:03        a     8
5 2012-01-01 00:00:04        b     2
6 2012-01-01 00:00:05        c     3

つまり、カテゴリ変数 (因子)、その変数の値、および観測が記録されたタイムスタンプがあります。カテゴリ変数ごとに、特定の時間「バケット」の値の合計をプロットしたい-できればggplot2. 視覚化する前に事前に集計する必要はありません。つまり、データセットをそのままにして、引数を渡してすぐggplot2に集計するという柔軟性が本当に必要です。それでも、私は完全に困惑しています。のドキュメントにgeom_lineは、値の合計を取得するために使用stat='identity'するように書かれていますが、一度それを行うと、どのような種類のビンも定義できなくなります。を使用するstat_summaryと、プロットがまったく返されないことがよくあります。私が得た最も近いものは次のとおりです。

tdf$variable <- factor(tdf$variable)

vis <- ggplot(tdf, aes(x=datetime, y=value, color=variable))
vis <- vis + geom_line(stat='identity')
vis <- vis + scale_x_datetime()

...少なくともプロットを出力し、各因子の値に対応する行を...秒単位で表示します。データを事前に集計するための一連の作業を行わずに、たとえば 1 時間、1 日、または 1 週間操作を行うことbinはできません。sum(value)

ヘルプ?

編集:Rセッションがこのテストデータで窒息した人にはお詫びします。切り返しました。

4

1 に答える 1

4

わかりました、これはあなたが望むものだと思います。私はあなたのデータセットを劇的に削減しました.投稿されたものは、このようなものをテストするには大きすぎます.

tdf <- data.frame('datetime' = seq(from=as.POSIXct('2012-01-01 00:00:00'), to=as.POSIXct('2012-01-01 00:10:59'), by=1))
tdf$variable <- rep(c('a','b','c'), length.out=length(tdf$datetime))
tdf$value <- sample(1:10, length(tdf$datetime), replace=T)
tdf$variable <- factor(tdf$variable)

vis2 <- ggplot(tdf, aes(datetime, color=variable)) + 
geom_bar(binwidth=5,aes(weight=value),position="dodge") + 
scale_x_datetime(limits=c(min(tdf$datetime), max(tdf$datetime)))

geom_barstat_binビンを変更できるように使用します。デフォルトではカウントを取得しますが、合計が必要な場合は、 にweight引数を追加できますaes()。これがあなたの質問に答えていない場合はお知らせください。

ところで、この特定のデータの設定方法では、次のようなものを使用して変数を分離するのがおそらく理にかなっていますfacet

vis2 <- ggplot(tdf, aes(datetime, fill=variable)) + 
geom_bar(binwidth=100,aes(weight=value),position="dodge") + 
scale_x_datetime(limits=c(min(tdf$datetime), max(tdf$datetime))) + 
facet_wrap(~variable)

そうしないと、変数が異なる時間ビンにまたがっているように見える場合があります。

于 2013-03-04T22:16:46.067 に答える