在图中设置y轴

Hag*_*ner 2 r

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

我希望以特殊的方式在y轴上有刻度线(以及这些刻度线上的标签).例如,从3到9,一个单元.

这是代码:

windows()         
par(yaxp = c(3, 9, 7))
plot(1:10)
Run Code Online (Sandbox Code Playgroud)

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

windows()
par(yaxt = "n", yaxp = c(3, 9, 7))
plot(1:10)
Run Code Online (Sandbox Code Playgroud)

要么

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

不幸的是,我在每一个案例都失败了......任何想法?

jor*_*ran 7

你已经收到了一些很好的解决方案,但是我想我会回答"为什么?" 一部分.在这种情况下,R的文档是正确的,但可能不尽可能透明.

如果您查看?par描述部分xaxp,您会发现:

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

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

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

所以正在发生的事情就是呼叫plot最终导致呼叫plot.window,其副作用是实际重置设置usr,xaxpyaxp.当然,除非你已经将这些参数直接传递给更高级别的函数plot,因此反过来将它们交给了plot.window.

就个人而言,我认为在详细信息部分中值得一提的?par是参数列表,这些参数只能通过使用par()而不是将它们传递给高级绘图函数来设置.


小智 6

我通常通过设置axes = FALSEplot()的调用来解决这个问题,然后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
Run Code Online (Sandbox Code Playgroud)


Rom*_*rik 5

这对我有用吗?

plot(1:10, yaxp = c(3, 9, 6))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述