我正在尝试使用以下代码制作带有ggplot2的boxplot:
p <- ggplot(data, aes(d$score, reorder(d$names d$scores, median))) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)
我有称为分数的名称和整数因子.
我的代码生成了一个图,但图形没有描述框(只显示行),我收到一条警告信息,"position_dodge需要非重叠的x区间." 我试图调整高度和宽度geom_boxplot(width=5),但这似乎没有解决问题.任何人都可以建议解决我的问题吗?
我应该指出,我的boxplot相当大,在y轴上有大约200个名称值).也许这就是问题?
Bri*_*ggs 25
团体数量不是问题; 即使只有2组,我也可以看到同样的事情.问题是ggplot2垂直绘制箱形图(沿y连续,沿x分类)并且您试图水平绘制它们(沿x连续,沿y分类).
此外,您的示例有几个语法错误,并且不可重现,因为我们没有data/ d.
从一些模拟数据开始
dat <- data.frame(scores=rnorm(1000,sd=500),
names=sample(LETTERS, 1000, replace=TRUE))
Run Code Online (Sandbox Code Playgroud)
更正了示例代码的版本:
ggplot(dat, aes(scores, reorder(names, scores, median))) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

这是你看到的水平线.
如果你改为将分类放在x轴上,而连续放在你得到的y上
ggplot(dat, aes(reorder(names, scores, median), scores)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

最后,如果要翻转坐标轴,可以使用coord_flip().如果您正在做更复杂的事情,可能会有一些额外的问题,但对于基本的箱形图,它可以工作.
ggplot(dat, aes(reorder(names, scores, median), scores)) +
geom_boxplot() + coord_flip()
Run Code Online (Sandbox Code Playgroud)

万一其他人到达这里想知道为什么他们会看到
警告信息:
position_dodge 需要不重叠的 x 间隔
发生这种情况的原因是一些箱线图/小提琴图(或其他绘图类型)可能重叠。在许多情况下,您可能不关心,但在某些情况下,它很重要,因此它会警告您。
你有两个选择。生成/打印 ggplot 时抑制警告
另一种选择是,只需更改绘图的宽度,使绘图不重叠,然后警告就会消失。尝试更改widthgeom 的参数:例如geom_boxplot(width = 0.5)(同样适用于geom_violin())