あなたがしたいレイアウトを取得する代わりにhoriz
のncol =
パラメータを使用することができます。 horiz
がncol
を上書きするため、両方を同時に使用しないでください。これは行の数を直接指定するものではありませんが、行の数は列と要素の数によって決定されるため、間接的に行の数を指定します。
MyCol <- topo.colors(20)
barplot(rep(1,20), yaxt="n", col=MyCol)
x <- 1:20
MyLab <- paste("Zone",x)
legend("bottom",MyLab,fill=MyCol,ncol=5)
あなたが行に沿って注文した凡例項目を整理したい場合は、あなたが望む順番でそれらのインデックスを作成することによってこれを行うことができます。例えば。
MyOrder = as.vector(matrix(1:20, nrow = 4, ncol = 5, byrow = T))
legend("bottom",MyLab[MyOrder], fill=MyCol[MyOrder] ,ncol=5)
行と要因の異なる数のために一般化するために、我々は
Nfact = 21
Nrows = 5
Ncols = ceiling(Nfact/Nrows)
MyOrder = as.vector(matrix(1:(Nrows*Ncols), nrow=Nrows, ncol=Ncols, byrow=T))
MyCol <- topo.colors(Nfact)
x <- 1:Nfact
MyLab <- paste("Zone",x)
barplot(rep(1,Nfact), yaxt="n", col=MyCol)
legend("bottom", MyLab[MyOrder], fill = MyCol[MyOrder], ncol = Ncols, border=NA)
そして最終的余分なトリックのような何かを行うことができます:以前のプロットでは、 border = NAを設定します。これは、空の凡例項目(不完全な列の底にある凡例項目)の周囲に枠線が描画されないようにするためです。ボーダーが必要な場合は、描画したくない場所にのみ、境界カラーのベクトル(NA
)を作成する必要があります。
MyBorders = rep("black", Nrows*Ncols)
MyBorders[MyOrder > Nfact] <- NA
legend("bottom", MyLab[MyOrder], fill = MyCol[MyOrder], ncol = Ncols, border=MyBorders)