1

一緒にプロットしたい関連する時系列が多数あります。私が使用しggplot2 ているデータがどのように見えるかの例を次に示します。

set.seed(0)
require(ggplot2)
id <- LETTERS[1:18]
appDates <- as.Date("2000-01-01", origin = '1970-01-01') + 1:10
appRate <- runif(18, 1,4)
appRank <- rank(-appRate - colSums(anorm))

anorm <- array(rnorm(18*11), c(11,18))
tempDf <-lapply(seq_along(appDates), function(x) data.frame(adate = appDates[x], group = 1:18, id = id, arate = appRate + colSums(anorm[1:(x+1),]), ranked = appRank))

tempDf <- do.call(rbind, tempDf)
ggplot(tempDf, aes(x = adate, y = arate, group = group, color = id)) + geom_line()

これは問題ありませんが、色が似ている特定のパスを選択するのは難しいため、ID ラベルから関連する時系列に矢印を付けたいと思います。

ここに画像の説明を入力

「directlabels」を試してみましたが、うまくいかないようです

p <- ggplot(tempDf, aes(x = adate, y = arate, group = group, color = id)) + geom_line()
require(directlabels)
direct.label(p,list(last.points, hjust=0.8, vjust = 1))

ここに画像の説明を入力

私が探しているものの手で行われた大雑把な例

ここに画像の説明を入力

最終ランキングの追加に伴い、識別を容易にするために異なる線の太さを追加しました。

p <- ggplot(tempDf, aes(x = adate, y = arate, group = group, color = id, size = ranked)) + geom_line()
p + scale_size(range=c(2.6, 0.4), guide=FALSE)+
       guides(colour = guide_legend(override.aes = list(size=seq(2.6,0.4, length.out = 18)[appRank])))

ここに画像の説明を入力

4

1 に答える 1

1

これはあなたの質問に正確に答えるものではありませんが、私が言いたいことのいくつかの写真を含めたかったので、答えに入れました.

本当にランクを表示したい場合は、特にヒート マップをお勧めします。ただし、割合を y 軸として使用する代わりにランクを使用し、割合を塗りつぶしの色として使用します。これが私が意味することです:

# I think your rank was broken -- but I might be missing something.
tempDf$real.rank<-unlist(by(tempDf$arate,tempDf$adate,rank)) 
ggplot(tempDf, aes(x = adate ,fill = arate, y = real.rank)) +   ]
  geom_tile() +
  geom_text(aes(label=id),color='white')

ここに画像の説明を入力

ランクの変化を本当に強調したい場合は、文字の間に線を引くことができます。

ggplot(tempDf, aes(x = adate ,fill = arate, y = real.rank)) +   
  geom_tile() +
  geom_text(aes(label=id),color='white') +
  geom_line(aes(group=id,color=id))

ここに画像の説明を入力

どちらの場合でも、正確なレートを伝えるのがより困難になるという犠牲を払って、ランク自体であるヒートマップを使用してデータの次元を追加すると思います。

于 2013-06-26T11:45:26.343 に答える