你可以用它代替horiz
的ncol =
參數來獲取你想要的佈局。請注意0覆蓋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)