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

标签 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 轴上放置任何刻度线或标签。谁能解释为什么以及如何返回所需的结果?

谢谢!

最佳答案

在绘图实际发生之前,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

关于R 在最大值和最小值处绘制 y 轴刻度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586962/

相关文章:

r - R中带有轮廓的文本标签

plot - 如何使用 Julia 中的时间数据获得更好的 Plots.jl xaxis 刻度标签?

r - 将图例标签添加到 ggplot 的条形图

python - 如何使用 matplotlib 删除/省略较小的轮廓线

r - 基于列或相邻列中的值的数据框子集

r - r 中多个 if else 循环的替代方案

r - 如何在R中使用渐变颜色和形状的散点图的点周围放置边框?

r - 基本 R 图中线型(或标记)和颜色的图例

r - grid.arrange 图上的奇怪空间

mysql - 将 R 图保存到 Web 服务器