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

R 为什么省略最后一个x轴标签?,r,plot,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() df您的轴限制不包括4;您需要使用xlim覆盖绘图的默认限制(它从数据中导出

在以下示例中,省略了最后一个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()

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

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

请注意,使用
axis
时,您对
at
的指定将成为您的
标签
,除非您覆盖该标签,因此您的脚本不需要指定
标签
;您的脚本可以变成:


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

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

请注意,使用
axis
时,您对
at
的指定将成为您的
标签
,除非您覆盖该标签,因此您的脚本不需要指定
标签
;您的脚本可以变成:

正如@griffinevo回答的(+1),如果希望轴限制变为4,则必须使用
xlim
指定。但是,可能有必要解释如何计算默认限制。文档中对此进行了解释,但有些模糊。在“帮助”页面上,搜索
xaxs
。你会看到的

样式“r”(常规)首先在每个位置将数据范围扩展4% 结束,然后找到一个轴,该轴具有适合该轴的漂亮标签 扩大射程

在您的情况下,数据范围为1到3.8。所以plot会在范围内寻找漂亮的标签

1 - 0.04*(3.8-1) = 0.888   
    to 
3.8 + 0.04*(3.8-1) = 3.912
4不在此范围内,因此不会显示为轴标签。为了完整起见,值得注意的是,“pretty”听起来只是一个词,但实际上在这里有一个技术含义——与
pretty
函数相关。如果查看帮助页面
?pretty
,您将看到以下说明:

计算一个由大约n+1个等距“圆形”值组成的序列,其中 覆盖x中的值范围。选择这些值是为了 是10的幂的1、2或5倍

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

如@griffinevo回答(+1),如果希望轴限制变为4,则必须使用
xlim
指定。但是,可能有必要解释如何计算默认限制。文档中对此进行了解释,但有些模糊。在“帮助”页面上,搜索
xaxs
。你会看到的

样式“r”(常规)首先在每个位置将数据范围扩展4% 结束,然后找到一个轴,该轴具有适合该轴的漂亮标签 扩大射程

在您的情况下,数据范围为1到3.8。所以plot会在范围内寻找漂亮的标签

1 - 0.04*(3.8-1) = 0.888   
    to 
3.8 + 0.04*(3.8-1) = 3.912
4不在此范围内,因此不会显示为轴标签。为了完整起见,值得注意的是,“pretty”听起来只是一个词,但实际上在这里有一个技术含义——与
pretty
函数相关。如果查看帮助页面
?pretty
,您将看到以下说明:

计算一个由大约n+1个等距“圆形”值组成的序列,其中 覆盖x中的值范围。选择这些值是为了 是10的幂的1、2或5倍

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