2013-02-15 62 views
4

我正在做一個14列的barplot來表示一些數據,我設置names.arg選項顯示爲垂直標籤,不幸的是,這導致新的垂直標籤與「sub」和「xlab 「我有選擇。我如何防止這種情況發生?barplot設計問題

這裏是我的命令:

par(mar=c(6, 5, 4,7.5)) 
barplot(x, main=paste("title1 \n","subtitle"), 
names.arg=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14),las=2, sub=("overlapping text1"), 
xlab="overlapping text2", col = c("red2","darkorange3")) 

在我腦海裏的另一個問題是,我在「主」用一個2行標題,你可以在命令看到。是否可以減小第二行字體,同時保持第一行的格式相同?

謝謝,

回答

8

一種解決方案來改變字體大小標題之一,是使用不同的線路具有不同cex=值的函數mtext()兩個呼叫並從barplot()除去main=。爲了克服重疊文本的問題,mtext()也可以用來代替xlab=sub=。你只需要找到合適的line=,並通過par(mar=..)增加地塊周圍的空間。

x<-sample(letters[1:14],300,replace=TRUE) 
par(mar=c(9,3,5,2))  
barplot(table(x), 
     names.arg=paste0("very_long_",1:14),las=2, 
     col = c("red2","darkorange3")) 
mtext(side=3,"Title1",line=2,cex=2) 
mtext(side=3,"subtitle",line=1,cex=1.5) 

mtext(side=1,"overlapping text1",line=6) 
mtext(side=1,"overlapping text2",line=7) 

enter image description here

+0

感謝您的答覆Didzis。標題現在工作正常。我把勾去掉了,因爲重疊的文字對我來說不起作用。注意:在使用barplot函數之前,我使用par()來完成尺寸,這就是爲什麼mtext不能在底部工作?請參閱編輯瞭解我的par功能。注意:我嘗試將第1側的多行文字設置爲line = 20和line = 30,並且它仍然重疊。 – Error404 2013-02-15 16:05:13

+1

您只需在par(mar = ...)中增加數字,直到整個文本適合繪圖窗口,例如par(mar = c(9,5,5,7.5))。 – 2013-02-15 16:08:11

+0

上帝!我很抱歉老兄!我正在調整第二個參數,而不是par()函數中的第一個參數。非常感謝:)現在所有的工作都很好。 – Error404 2013-02-15 16:10:29

2

另一種選擇看是在plotrix包staxlab功能。

另請參見par函數的mgp參數,以設置軸標題的默認位置。