R在最大值和最小值处绘制y轴刻度线

时间:2016-04-13 01:29:23

标签: r plot

我需要绘制相同两个变量的多个图,但y值的范围在图中不同。为了简化y轴,我希望每个图显示仅在y轴的最小和最大范围显示刻度线和标签(图的最小值/最大值,而不是数据)。

我玩过usr和yaxp参数,但没有运气。这是一个玩具示例:

x<-1:10
y<-3:12
plot(x,y,yaxp=c(par("usr")[3],par("usr")[4],1))

我希望刻度线/标签对应于沿y轴的图的顶部和底部(中间没有),但这并不会在y轴上放置任何刻度线或标签。谁能解释为什么以及如何回归所期望的结果?

谢谢!

2 个答案:

答案 0 :(得分:5)

在实际绘图之前,usr值不会对您的数据正确。获取正确值的一种方法是首先绘制,获取值,然后使用这些值再次绘制刻度线:

plot(x, y)

min_tick <- par("usr")[3]
max_tick <- par("usr")[4]

plot(x, y, yaxt = "n") 
axis(side = 2, at = c(min_tick, max_tick))

enter image description here

我允许发生默认标签。这是可以根据需要定制的东西。

正如@ 42所指出的那样,轴的默认绘图行为是将数据范围扩展4%。因此,也可以使用该信息计算最小值和最大值:

min_tick <- min(y) - (max(y) - min(y)) * 0.04
max_tick <- max(y) + (max(y) - min(y)) * 0.04

答案 1 :(得分:2)

就在这里,ggplot2相当于设置breaks的{​​{1}}:

scale_y_continuous

plot with y breaks at min and max