2017-06-13 4 views
0

私は特定の時点で2つのグループ間に人の "流れ"をプロットしようとしています。geom_barに "flow"を追加してください。

次の例では:

d1=data.frame(c(1:6), 
       c("A","B","A","A","B","A"), 
       c("A","B","B","A","B","B") 
      ) 

names(d1)=c("id","time1","time2") 

require(reshape2) 
m1=melt(d1,id.vars="id") 

require(ggplot2) 
ggplot(m1,aes(x=variable,fill=value))+ 
    geom_bar(stat="count",width = 0.5) 

個体が観察「TIME1」および「TIME2」とのグループBにグループAから3,6「スイッチ」の番号。私はこれをプロットする可能性を模索しています。 Geom_polygonを試しましたが、成功しませんでした。より複雑な例をここで見ることができ
2グループAに滞在した個人やグループへの切り替えを2人2.

[1]

:間の有権者の流れをここで

は私が取得したいです2つの選挙。

[2] http://cdn1.salzburg24.at/2013/05/Waehlerstroeme-650x435.jpg

ggplotでこれを達成する方法はありますか?

+0

検索用語:

は、これは私が期待される結果を生成しました。 ggplot2にはネイティブギミックはありませんが、サンキーチャートを生成するメソッド(例えば 'networkD3'など)を持つ他のパッケージもあります。 – neilfws

+1

これは[沖積ダイアグラム](http://bc.bojanorama.pl/2014/03/alluvial-diagrams/)ですか? alluvial *と呼ばれる沖積ダイアグラムを作成するパッケージがあります。誰かが* ggplot2 *の拡張機能[ここ](https://github.com/corybrunson/ggalluvial)に取り組んでいるようです。 – aosmith

+0

沖積ダイアグラムは私が探していたものです。 – twckr

答えて

0

ありがとうaosmith!あなたは「サンキーダイアグラム」、または「サンキーチャート」であるのに役立ちます

require(alluvial) 

d2=aggregate(d1[,2], 
      by= d1[, c('time1','time2')], 
      FUN=function(x) length(x)) 

names(d2)[3]="Freq" 

alluvial(d2[,1:2],freq=d2$Freq) 
関連する問題