关于情节设置我有一个非常简单的问题.
我希望以特殊的方式在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)
不幸的是,我在每一个案例都失败了......任何想法?
你已经收到了一些很好的解决方案,但是我想我会回答"为什么?" 一部分.在这种情况下,R的文档是正确的,但可能不尽可能透明.
如果您查看?par描述部分xaxp,您会发现:
设置用户坐标系时会重置此参数,例如通过启动新页面或调用plot.window或设置par("usr"):n取自par("lab").
在下面yaxp,没有给出相同的警告,而是简单地说"看xaxp".usr参数中没有类似的警告?par,但情况可能相同,因为如果我们查找,?plot.window我们会看到:
调用的副作用是设置usr,xaxp和yaxp
所以正在发生的事情就是呼叫plot最终导致呼叫plot.window,其副作用是实际重置设置usr,xaxp和yaxp.当然,除非你已经将这些参数直接传递给更高级别的函数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)
| 归档时间: |
|
| 查看次数: |
11265 次 |
| 最近记录: |