2010-09-24 315 views

回答

81

至少有兩種方式在基本圖實現這一點(我的例子是x軸,但工作同樣爲y軸):

  1. 使用par(xaxp = c(x1, x2, n))plot(..., xaxp = c(x1, x2, n))定義極限刻度線和刻度線之間的間隔數(n)的位置(x1 & x2)。因此,n+1是繪製的刻度線數量。 (只有在不使用對數刻度時纔有效,因爲對數刻度的行爲請參見?par。)

  2. 您可以完全禁止繪製軸,並在後面添加刻度標記axis()
    要抑制軸的繪製,請使用plot(... , xaxt = "n")
    然後請致電axis()side,atlabelsaxis(side = 1, at = v1, labels = v2)。與side參考軸線的一側(1 = x軸,2 = y軸),v1是含有蜱(的位置的矢量例如,c(1, 3, 5)如果您的軸線範圍爲0〜6,並且希望3馬克)和v2包含指定刻度標記的標籤的矢量(必須與v1的長度相同,例如,c("group a", "group b", "group c"))。見?axismy updated answer to a post on stats.stackexchange for an example of this method

+0

有沒有辦法控制R用於數字刻度標籤的小數位數。我剛剛嘗試了標籤= c(0.0,0.5,1.0,1.5,2.0),但在圖中標籤爲0,0.5,1,1.5等。有沒有辦法在所有標籤上獲得相同的小數位數?我嘗試過標籤= round(seq(0,2,0.5),1),但是整個數字仍然沒有小數位。 – eipi10 2012-02-20 17:41:04

+1

嘗試函數'formatC'或'prettyNum'來創建要傳遞給'labels'的字符向量。例如:'formatC(seq(0,2,0。5),digits = 1,format =「f」)' – Henrik 2012-02-21 13:25:59

+0

+1一直在尋找一段時間來找到它。結果發現'n'實際上是刻度標記'-1'的數目。我想從'1'到'9'的刻度線,並且必須設置'xaxp = c(1,9,8)',否則我不會得到想要的結果。 – ThomasH 2012-12-05 17:16:22

22

使用基礎圖形,最簡單的方法是停止繪圖軸的繪圖功能,然後自己繪製它們。

plot(1:10, 1:10, axes = FALSE) 
axis(side = 1, at = c(1,5,10)) 
axis(side = 2, at = c(1,3,7,10)) 
box() 
+0

你好 我在x軸上有日期時間數據(chron) 在我的情況下,我認爲它應該比寫一行更好假設有25個完整的日期。 如果我想垂直寫在x軸上的日期,我的意思是垂直。 歡呼聲 – skan 2010-09-25 12:54:19

+1

看看圖形參數'las' in?par,它可以添加到對'axis()'的調用中,並控制滴答標籤的方向。例如。 'axis(side = 1,at = c(1,5,10),las = 2)'。您可能想要調查chron對象是否有'axis()'函數,或者考慮使用已經具有'axis()'函數(例如'axis.Date()')的R的Date Time類「')。 – 2010-09-25 23:01:02

3

我有一個數據集,其中時間爲x軸,強度爲y軸。我需要先刪除除了軸與標籤上的所有默認軸:

plot(Time,Intensity,axes=F) 

然後我重建情節與元素:

box() # create a wrap around the points plotted 
axis(labels=NA,side=1,tck=-0.015,at=c(seq(from=0,to=1000,by=100))) # labels = NA prevents the creation of the numbers and tick marks, tck is how long the tick mark is. 
axis(labels=NA,side=2,tck=-0.015) 
axis(lwd=0,side=1,line=-0.4,at=c(seq(from=0,to=1000,by=100))) # lwd option sets the tick mark to 0 length because tck already takes care of the mark 
axis(lwd=0,line=-0.4,side=2,las=1) # las changes the direction of the number labels to horizontal instead of vertical. 

所以,at = c(...)指定位置集合放刻度線。在這裏,我想把標記設置爲0,100,200,...,1000. seq(from =...,to =...,by =...)給了我限制和增量的選擇。

2

如果你不想R鍵添加小數或零,則可以從圖紙x軸或y軸或同時使用... AXT停止。然後,您可以添加自己的刻度和標籤:

plot(x, y, xaxt="n") 
plot(x, y, yaxt="n") 
axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third"))