关于情节设置我有一个非常简单的问题。
我想以特殊的方式在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))
不幸的是,我在每种情况下都失败了...... 任何想法??
答案 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
的设置,usr
和xaxp
。当然,除非你已经将这些参数直接传递给更高级别的函数,例如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))