gpt4 book ai didi

r - x轴离散时的geom_ribbon覆盖

转载 作者:行者123 更新时间:2023-12-04 22:13:29 27 4
gpt4 key购买 nike

我想在一组箱形图上加一个 basemap ,以指示从单独的数据源和单独的数据框中提取的某些数据的范围。制作覆盖图很容易;制作底衬很困难。

想象一下,出于这些目的,我试图将mtcars的一些数据添加到diamonds数据的箱线图上:

# Find quantiles of mtcars$drat
mQ <- quantile(mtcars$wt, c(0.025, 0.975))

# Place them in a data frame with factor limits of diamonds$cut
mtcarsQ <- data.frame(x=c(min(as.numeric(diamonds$cut)), max(as.numeric(diamonds$cut))), ymin=rep(mQ[1], 2), ymax=rep(mQ[2], 2))

# Plot diamonds$cut, with overlay of quantiles from mtcars
ggplot() +
geom_boxplot(data=diamonds, aes(x=cut, y=y)) +
geom_ribbon(data=mtcarsQ, aes(x=x, ymin=ymin, ymax=ymax), alpha=0.2)+
coord_cartesian(ylim=c(0, 12))

这很好用-除了我(实际上是我的合著者)希望 geom_ribbon位于框线图下方而不是上方。 (据称,色带的颜色会干扰箱线图的颜色)。当我尝试反转几何顺序时,如下所示:
ggplot() + 
geom_ribbon(data=mtcarsQ, aes(x=x, ymin=ymin, ymax=ymax), alpha=0.2)+
geom_boxplot(data=diamonds, aes(x=cut, y=y))

我得到 Error: Discrete value supplied to continuous scale,因为ggplot不想将一个因子映射到连续的比例。

我可以尝试使因子成为数字:
ggplot() + 
geom_ribbon(data=mtcarsQ, aes(x=x, ymin=ymin, ymax=ymax), alpha=0.2)+
geom_boxplot(data=diamonds, aes(x=as.numeric(cut), y=y))

但是,这会更改x轴标签。我以为可以将轴标签添加回如下:
ggplot() + 
geom_ribbon(data=mtcarsQ, aes(x=x, ymin=ymin, ymax=ymax), alpha=0.2)+
geom_boxplot(data=diamonds, aes(x=as.numeric(cut), y=y, fill=cut, group=cut)) +
scale_x_discrete(labels=levels(diamonds$cut)) +
coord_cartesian(ylim=c(0, 12))

但是由于我不了解的原因,x轴出现了额外的因子水平。

当箱形图具有离散的x轴时,是否有更简单的方法在箱形图下方放置一个矩形?

最佳答案

强制比例尺默认设置为默认值的最通用方法是从geom_blank开始,它将定义比例尺,但不绘制任何内容。我相信它是专门为这种情况而设计的:

ggplot() + 
geom_blank(data=diamonds, aes(x=cut, y=y)) +
geom_ribbon(data=mtcarsQ, aes(x=x, ymin=ymin, ymax=ymax), alpha=0.2)+
geom_boxplot(data=diamonds, aes(x=cut, y=y, fill=cut, group=cut)) +
coord_cartesian(ylim=c(0, 12))

关于r - x轴离散时的geom_ribbon覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com