ggplot构面网格条形图上的不同y限制?

n

我的资料:

    day variable      value
1  Fri     avg1 446.521127
2  Mon     avg1 461.676056
3  Sat     avg1 393.366197
4  Sun     avg1 435.985714
5  Thu     avg1 445.571429
6  Tue     avg1 441.549296
7  Wed     avg1 462.042254
8  Fri     avg2   7.442113
9  Mon     avg2   7.694648
10 Sat     avg2   6.556056
11 Sun     avg2   7.266571
12 Thu     avg2   7.426286
13 Tue     avg2   7.359577
14 Wed     avg2   7.700282

我的问题是我想facet_grid通过按日显示每组平均数据来创建条形图,但是观察到的结果非常相似,以至于我发现使用来指定y极限会有所帮助scale_y_continuous

因此,如果将ggplot分配给g <- ggplot(df, aes(x=day, y=value)),则可以通过以下两种方式获得所需的一半:

g + geom_bar(stat="identity") + facet_grid(variable~., scales="free")

g + geom_bar(stat="identity") + scale_y_continuous(limits=c(300,500), oob=rescale_none)

但是,我不知道如何使用构面网格然后指定scale_y_cont来限制单独的y轴的大小。有解决方案吗?

eipi10

您可以在使用时为不同的面创建单独的y范围geom_point,但是我不知道使用的方法geom_bar要使用facet_wrap设置特定的y范围,geom_bar我知道的唯一方法是创建单独的图,然后grid.arrangegridExtra中将它们并排放置(使用不降为零的垂直比例会夸大点/条之间的差异,这可能会引起误解,但您必须确定它是否适合您的特定情况。)

首先,这里是geom_point版本:想法是创建一个“虚拟”数据框,其中包含您想要的ylim上下限值,然后使用绘制它们geom_blankgeom_blank不会绘制任何内容,但是添加此几何图形将确保轴范围是您希望每个小平面的范围。

ddummy = data.frame(day=NA, variable=rep(c("avg1", "avg2"), each=2), 
               value=c(0.5*max(df$value[df$variable=="avg1"]), 
                       1.1*max(df$value[df$variable=="avg1"]),
                       0.5*max(df$value[df$variable=="avg2"]), 
                       1.1*max(df$value[df$variable=="avg2"])))

g <- ggplot(df, aes(x=day, y=value))

g + geom_point() + 
  geom_blank(data=dummy, aes(day, value)) +
  facet_grid(variable ~ ., scales="free")

在此处输入图片说明

这是单独的地块,与grid.arrange

avg1 = ggplot(df[df$variable=="avg1",], aes(x=day, y=value)) +
  geom_bar(stat="identity") +
  facet_wrap(~variable) +
  coord_cartesian(ylim=c(300,500))

avg2 = ggplot(df[df$variable=="avg2",], aes(x=day, y=value)) +
  geom_bar(stat="identity") +
  facet_wrap(~variable) +
  coord_cartesian(ylim=c(3.5,8))

gridExtra::grid.arrange(avg1, avg2, ncol=2)

在此处输入图片说明

要使用geom_segment(根据您的评论),您可以这样做:

library(dplyr)

ggplot(df %>% group_by(variable) %>%
         mutate(ymin=0.5*max(value))) +
  geom_segment(aes(x=day, xend=day, y=ymin, yend=value), 
               size=5, colour=hcl(195,100,65)) + 
  facet_grid(variable ~ ., scales="free")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ggplot2:为条形图的构面布局中的行指定不同的比例

包含组均值的多个条形图的构面网格

删除空的数据空间并在组合的条形图中保留统一的条形宽度。在ggplot2中使用构面网格

为ggplot堆叠的条形图升序排列每个构面

ggplot:在具有相同颜色图例的构面中订购条形图

使用ggplot2将文字添加到经过刻面标记的条形图上

根据ggplot2中最后一个面网格的递减值对条形图的Y轴进行排序

堆叠条形图上的R ggplot标签

Matplotlib 条形图上的颜色负值不同

重新排列构面内的条形图

为什么在r ggplot2中添加构面时,堆叠条形图会发生变化

ggplot条形图限制修复

更改ggplot2中构面图的每一行的y轴限制

带条形图的y轴限制

ggplot2中条形图的对称y轴限制

如何使用ggplot2修改极坐标中堆积条形图的y轴的限制?

Rstudio:在构面中调整分组条形图的条形宽度

ggplot2带有条件构面和整洁评估的构面网格

ggplot:生成具有多个序列的构面网格图

使用ggplot在地图上绘制条形图

ggplot2在堆叠的条形图上放置标签

如何在ggplot堆栈条形图上添加总线

使用 ggplot 在分组条形图上定位标签

ggplot中条形图上的分类值计数?

ggplot分组条形图上的对数刻度问题

如何使用ggplot2在条形图上放置标签?

使用构面网格绘制不同的x轴

在海洋条形图上绘制时,列的总和不同

R ggplot2条形图,条形图上有圆角