更改图表轴上刻度线的间距?

时间:2010-09-24 07:43:20

标签: r plot

如何更改绘图轴上刻度线的间距?

我应该在基本情节或rgl使用哪些参数?

5 个答案:

答案 0 :(得分:87)

至少有两种方法可以在基础图中实现这一点(我的例子是针对x轴的,但对y轴的工作方式相同):

  1. 使用par(xaxp = c(x1, x2, n))plot(..., xaxp = c(x1, x2, n))定义极端刻度线的位置(x1& x2)以及刻度线之间的间隔数(n)。因此,n+1是绘制的刻度线的数量。 (仅当您不使用对数刻度时才有效,对于具有对数刻度的行为,请参阅?par。)

  2. 您可以完全禁止绘制轴,并稍后使用axis()添加刻度线。
    要禁止绘制轴,请使用plot(... , xaxt = "n") 然后使用axis()sideatlabels致电axis(side = 1, at = v1, labels = v2)。当side指向轴的一侧(1 = x轴,2 = y轴)时,v1是包含刻度位置的向量(例如,c(1, 3, 5)如果你的轴的范围是0到6,你想要三个标记),v2一个包含指定刻度标记的矢量(必须与v1的长度相同,例如c("group a", "group b", "group c") )。请参阅?axismy updated answer to a post on stats.stackexchange for an example of this method

答案 1 :(得分:25)

使用基本图形,最简单的方法是从绘图轴停止绘图功能,然后自己绘制。

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()

答案 2 :(得分:6)

我有一个数据集,其中Time为x轴,Intensity为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 =...)给我选择限制和增量。

答案 3 :(得分:3)

如果您不希望R添加小数或零,则可以使用... axt停止绘制x轴或y轴或两者。然后,您可以添加自己的刻度和标签:

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

答案 4 :(得分:2)

我刚刚发现了Hmisc软件包:

  

包含许多有用的功能,这些功能可用于数据分析,高级图形,实用程序运算,用于计算样本大小和功效,导入和注释数据集,估算缺失值,高级表格制作,变量聚类,字符串处理,R转换的功能对象到LaTeX和html代码,并重新编码变量。

library(Hmisc)    
plot(...)
minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th