使用ggplot boxplot进行位置躲避警告?

drb*_*sen 2 r ggplot2

我正在尝试使用以下代码制作带有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)

ggplot(dat,aes(score,reorder(names,scores,median)))+ geom_boxplot()

这是你看到的水平线.

如果你改为将分类放在x轴上,而连续放在你得到的y上

ggplot(dat, aes(reorder(names, scores, median), scores)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

ggplot(dat,aes(reorder(names,scores,median),scores))+ geom_boxplot()

最后,如果要翻转坐标轴,可以使用coord_flip().如果您正在做更复杂的事情,可能会有一些额外的问题,但对于基本的箱形图,它可以工作.

ggplot(dat, aes(reorder(names, scores, median), scores)) + 
  geom_boxplot() + coord_flip()
Run Code Online (Sandbox Code Playgroud)

ggplot(dat,aes(reorder(names,scores,median),scores))+ geom_boxplot()+ coord_flip()


use*_*745 9

万一其他人到达这里想知道为什么他们会看到

警告信息:

position_dodge 需要不重叠的 x 间隔

为什么会发生这种情况

发生这种情况的原因是一些箱线图/小提琴图(或其他绘图类型)可能重叠。在许多情况下,您可能不关心,但在某些情况下,它很重要,因此它会警告您。

如何修复它

你有两个选择。生成/打印 ggplot 时抑制警告

另一种选择是,只需更改绘图的宽度,使绘图不重叠,然后警告就会消失。尝试更改widthgeom 的参数:例如geom_boxplot(width = 0.5)(同样适用于geom_violin()