R 中 y 轴的箱线图刻度值?

Boxplot tick values for the y-axis in R?

我正在尝试在 R 中创建箱线图,但是,我发现图中的 y 轴刻度值有误。

.rdata 位于 https://www.dropbox.com/s/vbgf3mhgd2mjx8o/Mydata2.rdata?dl=0

load("Mydata2.rdata",.GlobalEnv)
boxplot(Value~Type+Level, data=Mydata2)

如图所示,y轴标记为“0、50、100”,然而,我的数据范围是-36.9到133.7。我想知道如何解决这个问题?

在这里,我使用了 minmeanmax 作为刻度线。您可以手动将它们设置为任何值,甚至可以设置超过 3 个刻度。 yaxt="n" 防止默认刻度线,然后通过使用 axis 并将边设置为 2 (axis(2,...) 我添加我想要的刻度线。阅读 R.

中的 ?axis
boxplot(Value~Type+Level, yaxt="n", data=Mydata2)
axis(2, 
     at=round(c(min(Mydata2$Value), mean(Mydata2$Value), max(Mydata2$Value)),1),
     labels = T)

后续问题:如何计算默认刻度线?

“当 at = NULL 时,漂亮的刻度线位置是在内部计算的(与 axTicks(side) 的方式相同)。”

那么,您的代码正在运行。默认刻度线由 boxplot 选择,因此它更漂亮(漂亮是主观的)。

两种方法:

  1. 通过 axisat 参数单独设置每个刻度线(at 是定义每个刻度线的数字向量):
boxplot(Value~Type+Level, yaxt="n", data=Mydata2)
tickmarks = c(min(Mydata2$Value), max(Mydata2$Value))
axis(2, at = round(tickmarks,1))
  1. 通过 boxplotylim 参数定义刻度线的范围。因此,要将刻度线的范围设置在 -40 到 140 之间:
boxplot(Value~Type+Level, data=Mydata2, ylim=c(-40,140))

方法 2 有时有效,但并非总是有效。方法 #1 更可靠且可自定义,因此应更频繁地使用。