在图中设置y轴

时间:2011-11-12 19:44:56

标签: r

关于情节设置我有一个非常简单的问题。

我想以特殊的方式在y轴上打勾(和这些刻度上的标签)。例如,从3到9,一个单位。

这是代码:

windows()         
par(yaxp = c(3, 9, 7))
plot(1:10)

但它不起作用。我真的不明白为什么? 我也尝试使用par()中的参数,如tck,tcl,yaxs,yaxt,yaxp和函数axis()。其中以下代码为例:

windows()
par(yaxt = "n", yaxp = c(3, 9, 7))
plot(1:10)

windows()
par(yaxt = "n")
plot(1:10)
axis(2, at = c(3, 4, 5))

不幸的是,我在每种情况下都失败了...... 任何想法??

3 个答案:

答案 0 :(得分:7)

你已经收到了一些解决你眼前问题的好方法,但我想我会回答“为什么?”一部分。在这种情况下,R的文档是正确的,但可能不尽可能透明。

如果您查看描述?par的{​​{1}}部分,您会发现:

  

设置用户坐标系时,此参数将被重置   例如,通过启动新页面或调用plot.window或设置   par(“usr”):n取自par(“lab”)。

xaxp下,没有给出相同的警告,而是简单地说'看yaxp'。 xaxp中的usr参数没有类似的警告,但情况可能相同,因为如果我们查找?par,我们会看到:

  

调用的副作用是设置usr,xaxp和yaxp

所发生的事情是,调用?plot.window最终会调用plot,其副作用是实际重置 plot.window的设置,usrxaxp。当然,除非你已经将这些参数直接传递给更高级别的函数,例如yaxp,然后将它们移交给plot

就我个人而言,我认为这应该在plot.window的详细信息部分以及使用?par只能 设置的参数列表中提及,而不是将它们传递给高级绘图功能。

答案 1 :(得分:6)

我通常通过在plot()调用中设置axes = FALSE然后使用axis()绘制各个轴来解决此问题。

# no call to par() needed
plot(c(1:10), axes = FALSE)
axis(1)                     # x-Axis
ticks <- seq(3, 9, 1)       # sequence for ticks and labels
axis(2, at = ticks,         # y-Axis
    labels = ticks)
box()                       # and a box around the plot

答案 2 :(得分:5)

这对我有用吗?

plot(1:10, yaxp = c(3, 9, 6))

enter image description here