1

構造プロットとまったく同じ積み上げ棒グラフを作成したいと思います (プログラム disstruct を使用)。X ラベルを共通因子でグループ化し、この因子を 1 回だけ表示するにはどうすればよいでしょうか? たとえば、以下には 2 つの集団からの 6 人の個体があり、集団グループを中心とする 2 つのラベルのみが必要です。また、各グループの周りにボックスを配置する方法はありますか?

ここに私が持っているものがあります:

df <- data.frame(A1=c(0.000, 0.000, 0.020, 0.000, 0.000, 0.000),
       A2=c(0.000, 0.000, 0.235, 0.195, 0.166, 0.205),
       A3=c(0.065, 0.027, 0.000, 0.027, 0.000, 0.036),
       A4=c(0.000, 0.000, 0.007, 0.011, 0.000, 0.000),
       A5=c(0.000, 0.000, 0.000, 0.002, 0.028, 0.000),
       A6=c(0.000, 0.041, 0.021, 0.068, 0.106, 0.105),
       A7=c(0.093, 0.085, 0.001, 0.056, 0.110, 0.000),
       A8=c(0.000, 0.000, 0.000, 0.000, 0.000, 0.029),
       A9=c(0.000, 0.000, 0.058, 0.027, 0.096, 0.156),
       A10=c(0.000, 0.023, 0.129, 0.012, 0.074, 0.117),
       A11=c(0.000, 0.041, 0.000, 0.000, 0.000, 0.000),
       A12=c(0.024, 0.000, 0.000, 0.000, 0.000, 0.000),
       A13=c(0.817, 0.783, 0.527, 0.446, 0.258, 0.321),
       A14=c(0.000, 0.000, 0.000, 0.006, 0.000, 0.000),
       A15=c(0.000, 0.000, 0.000, 0.054, 0.143, 0.027),
       A16=c(0.000, 0.000, 0.000, 0.000, 0.000, 0.003),
       A17=c(0.000, 0.000, 0.000, 0.097, 0.019, 0.000))

barplot(t(df), col=rainbow(17), border=NA,space=0.05,
        names.arg=c("1","1","2","2","2","2"),
        xlab="Population", ylab="Ancestry")

前

そして、ここに私が欲しいものがあります:

後

可能であれば、space=パラメータを設定し、グループ間の黒い境界線の幅を個別に選択するとよいでしょう。

私が参照したプログラムは次のとおりです: http://pritchardlab.stanford.edu/structure.html

多分 ggplot はこれに適していますか? 答えが明らかな場合は申し訳ありませんが、わかりません。

""特定の値を手動で入力できることに注意names.argしてください。ただし、これは巨大なデータセットの場合は面倒であり、ラベルを適切に中央に配置できず、境界線の問題を解決できません。

4

1 に答える 1