4

リストのリストから要素をプロットしようとしています。具体的には、外側のリストのインデックスをax値として、内側のリストの各要素の値をay値として使用して、所属するクラスに従って各ポイントに色を付けています。2つのサブリストを含むリストの例:

sample.list <- list(list("A"=0,"B"=0.14285, "C"=0.75), list("A"=0.138,"B"=0,"C"=0.1))
[[1]]
[[1]]$A
[1] 0

[[1]]$B
[1] 0.14285

[[1]]$C
[1] 0.75

[[2]]
[[2]]$A
[1] 0.138

[[2]]$B
[1] 0

[[2]]$C
[1] 0.1

私の希望する出力は、ポイントで最初のサブリストをプロットします

(1, 0), (1, 0.14285), (1, 0.5)

(つまり、サブリスト要素はに沿って垂直線を形成しますx=1)、2番目のサブリストも同様にプロットされます。さらに、各サブリスト要素の色は異なりAます。赤、B緑などです。明確にするために、これをすべて1つのグラフで実行しようとしています。さらに、リスト要素の数は、データセットによって変わる可能性があります。この問題に取り組む方法についてのポインタは非常に高く評価されています!

4

2 に答える 2

3
library(plyr)
library(ggplot2)
library(reshape2)
df <- melt(ldply(sample.list, data.frame))
df2 <- ddply(df, .(variable), function(x) { x$index <- 1:nrow(x); x})
ggplot(df2, aes(index, value, color = variable)) + 
geom_point(size=3) + scale_x_continuous(breaks = seq(1:max(df2$index)))

ここに画像の説明を入力してください

于 2012-10-15T16:01:38.217 に答える
2

これらの非ggplot-ersの基本的なソリューションは次のとおりです。

plot(1:length(sample.list),ylim=c(0,max(unlist(sample.list))),xaxt="n",ann=FALSE)
axis(1,at=1:length(sample.list),labels=1:length(sample.list))

invisible(
  sapply(
      1:length(sample.list),
      function(x) {
        tmp2plot <- sample.list[[x]]
        points(rep(x,length(tmp2plot)),unlist(tmp2plot),col=1:length(tmp2plot),pch=19)
      }
  )
)

title(xlab="Index",ylab="Value")

結果:

ここに画像の説明を入力してください

于 2012-10-15T23:47:31.560 に答える