为什么省略最后一个x轴标签?

时间:2018-05-04 12:02:36

标签: r plot

在以下示例中,省略了最后一个x轴标签(" 4.0")。

df <- data.frame(x = c(1, 2, 3.8), y = c(1, 2, 3))
#png(filename = "cutoff.png")
plot(df$x, df$y, xaxt = "n")
axis(side = 1, at = seq(0, 4, 0.5), labels = seq(0, 4, 0.5))
#dev.off()

如何防止这种行为? enter image description here

2 个答案:

答案 0 :(得分:2)

您的轴限制不包括4;您需要使用xlim覆盖绘图的默认限制(它从数据中派生):

plot(df$x, df$y, xaxt = "n", xlim = c(1, 4))

enter image description here

请注意,使用axis时,at的规范将成为您的labels,除非您覆盖该规范,因此您的脚本无需指定labels ;你的脚本可以成为:

axis(side = 1, at = seq(0, 4, 0.5))

答案 1 :(得分:2)

正如@griffinevo回答(+1),如果您希望轴限制转到4,则必须使用xlim指定。但是,可能有必要解释如何计算默认限制。这在文档中有解释,但在一个稍微模糊的地方。在帮助页?par上搜索xaxs。在那里你会看到

  

样式“r”(常规)首先将数据范围扩展4%   结束然后找到一个带有漂亮标签的轴   扩展范围。

在您的情况下,数据范围从1到3.8。因此,情节将在范围内寻找漂亮的标签

1 - 0.04*(3.8-1) = 0.888   
    to 
3.8 + 0.04*(3.8-1) = 3.912

4超出此范围,因此不会显示为轴标签。为了完整起见,值得注意的是“漂亮”听起来只是一个单词,但实际上这里有一个技术含义 - 与pretty函数相关。如果您查看帮助页?pretty,您会看到说明:

  

计算大约n + 1个等间距'圆'值的序列   覆盖x中值的范围。选择这些值以便它们   是10的幂的1,2或5倍。

帮助页面上还有其他详细信息。