2012-04-02 53 views
22

這是一個基本問題,但我無法找到答案。我在一個小組內生成約9個小區,每個小區大約有12個小區。我在我的輸入中提供了所有12個標籤,但R僅命名了替代條。這顯然是由於R中的一些默認設置需要改變,但我無法找到它。如何在R barplot中顯示所有x標籤?

+2

使繪圖畫布更大 – James 2012-04-02 18:55:32

回答

23

如果您在plot()呼叫中使用las=2,您可能會看到所有標籤。否則,您需要使用xaxt="n",然後將標籤放入另一個電話號碼axis(1, at= ..., labels=...)

另一種方法是先收集的中點,然後使用文本()用XPD和SRT控制文本旋轉程度:

text(x=midpts, y=-2, names(DD), cex=0.8, srt=45, xpd=TRUE) 

的y值需要使用的座標在被選擇繪製區域。

+2

拉斯維加斯= 2,工作正常,特別是對許多酒吧更有用 – user2760 2012-04-02 19:01:12

+1

'拉斯維加斯= 2'的建議工作,但'軸(...)'不。 'axis()'是首先被'barplot()'使用的東西;當它自己調用時,它會再次'儘量不要畫出重疊的刻度標籤',(如'?axis'所示)。 – 2012-04-02 19:13:15

+0

它取決於具體情況。在你提供這個代碼的情況下,確實在每個tick上添加標籤:'axis(1,at = midpts,labels = names(DD),cex.axis = 0.7)' – 2012-04-02 19:53:21

16

要獲得一個基礎R barplot,你可以(像我在這裏做的)適應在的小插曲給出的 例子中的一個旋轉標籤gridBase包:

library(grid) 
library(gridBase) 

## Make some data with names long enough that barplot won't print them all 
DD <- table(rpois(100, lambda=5)) 
names(DD) <- paste("long", names(DD), sep="_") 

## Plot, but suppress the labels 
midpts <- barplot(DD, col=rainbow(20), names.arg="") 

## Use grid to add the labels  
vps <- baseViewports() 
pushViewport(vps$inner, vps$figure, vps$plot) 

grid.text(names(DD), 
    x = unit(midpts, "native"), y=unit(-1, "lines"), 
    just="right", rot=50) 

popViewport(3) 

enter image description here

+0

嗯。我只是得到「無法找到功能」pushViewport「,所以我想這是舊的 – Dirk 2017-07-14 20:56:05

+1

@Dirk感謝您的評論看起來像你現在需要明確加載**網格**包,我只是做了編輯,現在工作如預期。 – 2017-07-14 22:43:09