如果只有一个箱线图,则忽略 Makie 箱线图宽度

Makie boxplot width is ignored if only one boxplot

我正在使用 CairoMakie 绘制箱线图。 boxplot 中的参数 width 似乎仅在有 2 个或更多箱线图要绘制时才有效,但如果只有一个箱线图,则忽略。例如,

using CairoMakie

xs = rand(1:2, 1000)
ys = randn(1000)

boxplot(xs, ys; width=0.2)
current_figure()

正确地给出了纤细的箱线图外观:

但是这样做:

using CairoMakie

xs = rand(1:1, 1000)
ys = randn(1000)

boxplot(xs, ys; width=0.2)
current_figure()

而是给出一个宽箱线图,不管我给 width 参数赋予什么值:

这是一个错误吗?仅绘制 1 个箱线图的任何变通方法也会给我一个苗条的箱线图。谢谢。

这两个图实际上使用相同的宽度,因为框在两个图中占据相同的 x 轴范围。您可以在第二个图中看到框的范围从 0.90 到 1.10 - 因此它跨越了您要求的 0.2 宽度。

不同的是,由于第二张图只有一个数据点,所以(自动选择的)x轴的视觉跨度要小得多。乍一看,第一个图似乎显示的是从 x = 0.8 到 2.2,所以 0.2 的宽度比较窄。第二个图只显示了从 0.89 到 1.11 的范围,所以 0.2 的宽度实际上是其中的很大一部分。

要使第二个图中的框在视觉上变细,您可以使用 xlims!:

设置 x 轴限制
boxplot(xs, ys; width=0.2)
xlims!(0, 2)
current_figure()