人々のグループが時間中に追跡され、3 つの時点で彼らが裁判官になりたいかどうか尋ねられたと仮定しましょう。その間、彼らは意見を変えるでしょう。時間の経過とともに、判断する/判断しないという意見の変化をグラフで示したいと思います。以下は、それをどのように表示できるかのアイデアです。
プロットの読み方は次のとおりです。
- 1,462 人の学生が抽出され、そのうち (400+295+22+147) 人が審査員になりたいと考えています (最初の行の束)。
- 青いパスは、最後に彼らが裁判官になることを意味します。
- 黒い道とは、最後に別のことをしたことを意味します。
- ラインが上がります:彼らは裁判官になりたいと思っています。
- 彼らは裁判官になりたくないのです。
- 線の太さは、この特定のパスを通過した人の数 (=パスの最後にプロットされた数) に比例します。
例:
(a) 118 人は、高校や大学では審査員になりたくなかったが、練習中に審査員になることを決めた。
(b) 練習までは 695 人がジャッジになることを決めていたが、練習後 400 人がジャッジになり、295 人が別のことをした。
主なアイデアは、どの種類の意思決定パスが存在し、どれが最も使用されているかを調査することです。
いくつか質問があります:
- この種のグラフに名前はありますか?
- このグラフをプロットできる R 関数は既にありますか?
- R関数がない場合:これをよりきれいにプロットする方法はありますか? 例: (3.1) カーブを隣接させたい (カーブ間のギャップやオーバーラップなし)。(3.2) 曲線の始点と終点は、y 軸に平行にする必要があります。
助言がありますか?
編集 1:
上記のものに似たプロットを見つけました: riverplot。たとえば、R ライブラリ riverplotまたはR bloggerを参照してください。リバープロットの欠点は、交差点で個々のスレッドまたはパスが失われることです。
データは次のとおりです。
library(reshape2)
library(ggplot2)
# Data
wide <- data.frame( grp = 1:8,
time1_orig = rep(8,8)
, time2_orig = rep(c(4,12), each = 4)
, time3_orig = rep(c(2,6,10,14), each = 2)
, time4_orig = seq(1,15,2)
, n = c(409,118,38,33,147,22,295,400) # number of persion
, d = c(1,0,1,0,1,0,1,0) # decision
)
wide
grp time1_orig time2_orig time3_orig time4_orig n d
1 1 8 4 2 1 409 1
2 2 8 4 2 3 118 0
3 3 8 4 6 5 38 1
4 4 8 4 6 7 33 0
5 5 8 12 10 9 147 1
6 6 8 12 10 11 22 0
7 7 8 12 14 13 295 1
8 8 8 12 14 15 400 0
以下は、プロットを取得するためのデータの変換です。
w <- 500
wide$time1 <- wide$time1_orig + (cumsum(wide$n)-(wide$n)/2)/w
wide$time2 <- wide$time2_orig + (cumsum(wide$n)-(wide$n)/2)/w
wide$time3 <- wide$time3_orig + (cumsum(wide$n)-(wide$n)/2)/w
wide$time4 <- wide$time4_orig + (cumsum(wide$n)-(wide$n)/2)/w
long<- melt(wide[,-c(2:5)], id = c("d","grp","n"))
long$d<-as.character(long$d)
str(long)
そして、ここにggplotがあります:
gg1 <- ggplot(long, aes(x=variable, y=value, group=grp, colour=d)) +
geom_line (aes(size=n),position=position_dodge(height=c(0.5))) +
geom_text(aes(label=c( "1462","" ,"" ,"" ,"" ,"" ,"" ,""
,"" ,"" ,"598","" ,"" ,"864","" ,""
,"527" ,"" ,"" ,"71" ,"169","" ,"" ,"695"
,"409" ,"118","38" ,"33" ,"147","22" ,"295","400"
)
, size = 300, vjust= -1.5)
) +
scale_colour_manual(name="",labels=c("Yes", "No"),values=c("royalblue","black")) +
theme(legend.position = c(0,1),legend.justification = c(0, 1),
legend.text = element_text( size=12),
axis.text = element_text( size=12),
axis.title = element_text( size=15),
plot.title = element_text( size=15)) +
guides(lwd="none") +
labs(x="", y="Consider a judge career as an option:") +
scale_y_discrete(labels="") +
scale_x_discrete(labels = c( "during high school"
, "during university"
, "during practice"
, ""
)
)
gg1