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

问题描述 投票:73回答:5

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

我应该在基础图或rgl中使用哪些参数?

r plot
5个回答
87
投票

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

  1. 使用par(xaxp = c(x1, x2, n))plot(..., xaxp = c(x1, x2, n))来定义极端刻度线的位置(x1x2)以及刻度线之间的间隔数(n)。因此,n+1是绘制的刻度线的数量。 (仅当您不使用对数刻度时才有效,对于具有对数刻度的行为,请参阅?par。)
  2. 您可以完全禁止绘制轴,然后使用axis()添加刻度线。 要抑制轴的绘制,请使用plot(... , xaxt = "n")。 然后用axis()sideat调用labelsaxis(side = 1, at = v1, labels = v2)side指的是轴的一侧(1 = x轴,2 = y轴),v1是一个包含刻度位置的矢量(例如,如果你的轴的范围是0到6,你需要三个标记,c(1, 3, 5) )和v2包含指定刻度线标签的向量(必须与v1长度相同,例如,c("group a", "group b", "group c"))。见?axismy updated answer to a post on stats.stackexchange for an example of this method

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

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
投票

如果您不希望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"))

2
投票

我刚刚发现了Hmisc包:

包含许多对数据分析,高级图形,实用程序操作,计算样本大小和功率的函数,导入和注释数据集,输入缺失值,高级表制作,变量聚类,字符串操作,R对象到LaTeX的转换有用的功能和HTML代码,以及重新编码变量。

library(Hmisc)    
plot(...)
minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th
© www.soinside.com 2019 - 2024. All rights reserved.