繁体   English   中英

ggplot2:将geom_dotplot与facet_grid一起使用时,没有自由轴缩放

[英]ggplot2: No free axis scales when using geom_dotplot with facet_grid

我一直试图使用facet_grid一起生成一系列点图。 这样做,我注意到geom_dotplot似乎没有响应facet_grid的scales =“free_y”参数。

这是一些示例代码:

require(ggplot2)

#Example data
set.seed(3)
df = data.frame(Gene = rep(c("a", "b", "c", "d"), each=20),
                ToD = rep(c("Morning", "Evening"), times = 40),
                Expression = c(runif(20, min=0, max=10),
                               runif(20, min=0, max=1),
                               runif(20, min=0, max=1000),
                               runif(20, min=0, max=100)))

#Box plots of example data
ggplot(df, aes(x = ToD, y = Expression)) +
    geom_boxplot() +
    facet_grid(Gene ~ ., scales = "free_y")

#Dot plots of example data
ggplot(df, aes(x = ToD, y = Expression)) +
    geom_dotplot(binaxis = "y", stackdir = "centerwhole") +
    facet_grid(Gene ~ ., scales = "free_y")

这里是我正在使用的R和ggplot2的版本:

  • R版本3.2.2(2015-08-14)
  • ggplot2_1.0.1.9003

因此,当我生成箱形图时,一切都按预期工作,y轴适当地缩放为每个构面行:

测试数据的箱形图

但是,点图对于每个构面行保持相同的y轴刻度:

测试数据的点图

我已经读过ggplot2中的一个已知错误,其中coord_flip和facet_grid在指定自由比例时不能一起工作。 这与同样的问题有关吗?

虽然我可以单独生成每个图,然后将它们与grid.arrange组合,但这对我的目的来说很麻烦。 我试图将这些点图与其他刻面图拼接在一起,我想避免使用grid.arrange重新生成所有这些图。 有什么想法吗?

感谢您提供的任何帮助,如果我能提供任何进一步的说明,请告诉我。

我一直在阅读?geom_dotplot的文档。 显然,binpositions-option可以设置为“all”(所有数据合在一起)或“bygroup”; 默认。 因此,使用Gene作为组和facet,binpositions可以变化,并且至少返回自由y轴:

ggplot(df, aes(x = ToD, y = Expression, group=Gene)) +
  geom_dotplot(binaxis = "y", stackdir = "centerwhole", binpositions="bygroup") +
  facet_grid(Gene ~ ., scales = "free_y")

在此输入图像描述

但现在x轴上的分组消失了。 可能有一个更好的解决方案,但Gene和ToD之间的交互分组似乎可以解决它:

 ggplot(df, aes(x = ToD, y = Expression, group=interaction(Gene,ToD))) +
  geom_dotplot(binaxis = "y", stackdir = "centerwhole", binpositions="bygroup") +
  facet_grid(Gene ~ ., scales = "free_y")

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM