2011-12-31 69 views
10

當我手動(axis(1, at=1:27, labels=labs[0:27]))添加以下標籤:[R耗損所有軸標籤(防止一些被跳過)

> labs[0:27] 
[1] "0\n9.3%" "1\n7.6%" "2\n5.6%" "3\n5.1%" "4\n5.7%" "5\n6.5%" "6\n7.3%" "7\n7.6%" "8\n7.5%" "9\n7%" "10\n6.2%" "11\n5.2%" 
[13] "12\n4.2%" ........ 

我得到如下:

enter image description here

怎麼辦我強制所有的標籤被繪製,所以1,3,5,6和11不會被跳過? (另外,對於額外的學分,我怎麼整件事向下移動幾個像素?)

+0

你真的想在索引中包含0嗎? – 2012-01-01 16:05:10

回答

10

軸告訴你:

代碼試圖很難不吸引的重疊刻度標記,等會省略標籤,在那裏他們將抵制或重疊先前繪製的標籤。例如,這可能導致每隔一個標記被打上標記。 (蜱繪製左到至少一個「M」的大小被標籤之間左右或底部到頂部和空間。)

播放與cex.axis使得標籤足夠小以適合不重疊

labs <-c("0\n9.3%","1\n7.6%","2\n5.6%","3\n5.1%","4\n5.7%","5\n6.5%","6\n7.3%", 
     "7\n7.6%","8\n7.5%","9\n7%", "10\n6.2%","11\n5.2%","12\n4.2%",12:27) 
plot(1:27,xaxt = "n") 
axis(side=1, at=1:27, labels=labs[0:27],cex.axis=0.35) 

如果您拓寬了圖形(手動拖動或編程),您可以增加標籤的大小。

+0

非常感謝。 cex.axis很大程度上幫助 – 2017-03-13 12:37:32

2

@PLapointe剛剛發佈了我想說的話,但省略了獎金答案。

設置padj = 0.5axis將標籤略微向下移動。

+2

其他替代方法是使標籤與 '''plot(...,las = 2)''''或par(las = 2)垂直。爲...先前的旋轉軸解決方案繪製(...)''' – lukmdo 2013-10-10 10:31:48

+0

+1。關於上述說明,如果您正在使用'plot(...,axis = FALSE,...)'和'axis(1,....)',則將該選項添加到axis:'axis( 1,...,拉斯= 2)' – r3x 2015-12-27 21:54:21

14

如果你真的要強制所有的標籤顯示,即使他們都非常接近或重疊,就可以「欺騙」 R到加入了其他命令奇數和偶數軸標籤顯示它們,如下所示:

labs <-c("0\n9.3%","1\n7.6%","2\n5.6%","3\n5.1%","4\n5.7%","5\n6.5%","6\n7.3%", 
     "7\n7.6%","8\n7.5%","9\n7%", "10\n6.2%","11\n5.2%","12\n4.2%",13:27) 
n=length(labs) 
plot(1:28, xaxt = "n") 
axis(side=1, at=seq(1,n,2), labels=labs[seq(1,n,2)], cex.axis=0.6) 
axis(side=1, at=seq(2,n,2), labels=labs[seq(2,n,2)], cex.axis=0.6) 

enter image description here

您可以cex.axis打得到你想要的文字大小。另請注意,您可能需要調整at=和/或labels=中的值的數量,以使它們相等。

我同意@PLapointe和@joran通常最好不要篡改R關於重疊的默認行爲。然而,我已經遇到了一些情況,即軸標籤看起來很不錯,即使它們不是完整的「m寬度」,我也碰到了奇數和偶數標籤交替的技巧,以此來獲得行爲I通緝。

3

雖然這裏有一些很好的答案,但OP不想調整標籤大小或改變任何有關情節除了適合所有的軸標籤。這很煩人,因爲通常看起來有足夠的空間來適應所有的軸標籤。

這是另一種解決方案。繪製沒有座標軸的繪圖,然後添加帶空標籤的刻度。將刻度的位置存儲在一個對象中,然後可以遍歷每個對象並將其放置在軸上的正確位置。

plot(1:10, 1:10, yaxt = "n") axis_ticks = axis(2, axTicks(2), labels = rep("", length(axTicks(2)))) for(i in axis_ticks) axis(2, i)

0

我有,我想錯開標籤,並讓他們不失打印一些類似的問題。我創建了兩組蜱,顯示第二組下方的蜱蟲,使它看起來好像蹣跚。

xaxis_stagger = function(positions,labels) { 
    odd=labels[seq(1,length(labels),2)] 
    odd_pos=positions[seq(1,length(positions),2)] 
    even=labels[seq(2,length(labels),2)] 
    even_pos=positions[seq(2,length(positions),2)] 
    axis(side=1,at=odd_pos,labels=odd) 
    axis(side=1,at=even_pos,labels=even,padj=1.5) 
} 

所以,你給你想要的蜱是位置,併爲那些蜱標籤,這將然後重新整理成兩套軸並繪製他們的原創情節。原始圖將使用xaxt =「n」完成。