2011-11-12 261 views
2

关于绘图设置,我有一个非常简单的问题。在图中设置y轴

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

这是代码:

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

但它不工作。我真的不明白为什么? 我也尝试玩par()的参数,如tck,tcl,yaxs,yaxt,yaxp和函数轴()。其中包括以下代码导致,例如:

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

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

回答

5

这对我有用吗?

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

enter image description here

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 
7

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

如果检查的?par描述xaxp的部分,你会发现:

此参数复位,当用户坐标系的建立,为 例如通过启动一个新的页面,或拨打情节.window或设置 par(“usr”):n取自par(“lab”)。

yaxp下,没有给出相同的警告,而是说简单的'请参阅xaxp'。有在?parusr参数没有类似的警告,但同样是可能的情况下,因为如果我们仰望?plot.window我们看到:

呼叫的一个副作用是成立的USR,xaxp和yaxp

那么是什么情况是,到plot呼叫最终导致调用plot.window,侧面效果是实际重置usrxaxpyaxp设置。当然,除非你直接将这些参数传递给更高级别的函数,如plot,然后将它们交给plot.window

就个人而言,我认为这值得一提的的?par与参数列表可以可以通过使用par(),而不是将它们传递给高层绘图函数设置沿细节部分。

+0

嗨乔兰,这是一个真正interssting信息!但是,如果我正确理解你发现的内容,那么NERVER在par中使用usr,xaxp和yaxp中的一个参数是有意义的,因为它们将从polt函数中重置。或者你能想到一个案例,它确实有意义吗? –