1

私は本当にできない3つのデータフレームを持っていrbindますcbind。これらは、母集団名が格納されている列「Pop.Name」を共有しています。集団名は 3 つの DFS 間で共通です。

私は ggplot2 を使用してstat="bin"、各データフレームの各母集団のケース数をカウント () し、それをプロットして、各 df とすべての母集団に対して異なるバーを持つようにしようとしています。基本的に、単一の df での処理と私が使用していた dfs と同様に、各集団のカウント データを左右に​​比較したいと考えていgeom_bar(position="dodge")ます。

私が使用しているdfだけをプロットするには:

plt<- ggplot(df1, aes(x=Pop.Name)) + theme_bw() # plot by pop
plt<- plt + geom_bar()

他の 2 つの dfs を同じプロットに追加するにはどうすればよいですか? それは非常に単純で、何かが欠けていると確信していますが、何がわかりません。私は試した:

plot1 <- ggplot(df1, aes(x=Pop.Name)) + 
    geom_bar() +
    geom_bar(data = df2)

他にもたくさんありますが、エラーが発生するか、ポップアップごとに1つのバーしか表示されません。これが重複していたら大変申し訳ありませんが、そうではないと思います。ただし、私の質問はこれと非常によく似ています: ggplotstacked bar plot from 2 separate data framesですが、データフレームを処理することはできませんrbind(cbind少なくとも単純な方法ではなく、それぞれが巨大です)。

ありがとう

いくつかのおもちゃのデータ:

df1<-structure(list(Pop.Name = c(1, 2, 3, 4, 3, 2, 1, 2, 3, 4), Loc = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 3L, 3L, 3L, 3L), .Label = c("a", "c", "d" ), class = "factor"), BP = c(10, 10, 10, 10, 50, 21, 33, 8, 8, 8)), .Names = c("Pop.Name", "Loc", "BP"), row.names = c(NA, -10L), class = "data.frame")

df2<-structure(list(Pop.Name = c(3, 2, 3, 4, 3, 2, 1), A = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 3L), .Label = c("x", "y", "z" ), class = "factor"), C = c(11, 11, 11, 10, 50, 21, 3)), .Names = c("Pop.Name", "A", "C"), row.names = c(NA, -7L), class = "data.frame")
4

1 に答える 1

0

ここにオプションがあります:

df.list <- list(a=df1, b=df2)
dat <- stack(lapply(df.list, `[[`, "Pop.Name"))
ggplot(dat, aes(x=values, fill=ind)) + geom_bar(position="dodge")

最初にデータ フレームをリストに入れ、次にとでPop.Name列だけを抽出し、最後にソース データ フレーム ラベルと だけを含むデータ フレームに戻します。これにより、次が生成されます。[[lapplystackPop.Name

ここに画像の説明を入力

Pop.Names これが機能するためには、 factor にできないことに注意してください。データ:

df1 <- data.frame(Pop.Name=sample(letters, 50, rep=T), stringsAsFactors=F)
df2 <- data.frame(Pop.Name=sample(letters, 50, rep=T), stringsAsFactors=F)

編集:データを投稿したことに気づいていませんでしたが、これはデータをそのまま使用します。

于 2014-05-15T13:20:18.457 に答える