发布
社区首页 >问答首页 >如何在R中制作点密度维恩图?

如何在R中制作点密度维恩图?
EN

Stack Overflow用户
提问于 2022-10-15 20:38:25
回答 1查看 53关注 0票数 4

我有一个蛋白质组数据集,所有的蛋白质都在集合A中,其中一些属于集合B、C和D。使用r包尤勒尔,我能够构造一个维恩图来可视化这些集合的交集。看这里。

然而,在我看来,用于生成集B、C和D的“滤波器”可能优先过滤出低强度的蛋白质。为了可视化这一点,我想构建一个点密度Venn图,其中每个点代表一个蛋白质的颜色,它的强度。这样的阴谋在R中有可能吗?我在Python中找到了一个详细介绍类似技术的博客帖子,但恐怕我不熟悉这种语言

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-13 23:59:48

复杂镦粗提供了在R中创建点密度图的实用程序(按照ggplot2方法,请参见文档)。

让我们为一个示例加载和过滤一些数据:

代码语言:javascript
代码运行次数:0
复制
library(ggplot2)
library(ComplexUpset)
movies = as.data.frame(ggplot2movies::movies)
genres = c('Comedy', 'Drama', 'Action')
movies[genres] = movies[genres] == 1
movies[movies$mpaa == '', 'mpaa'] = NA
movies = na.omit(movies)

首先,您需要安排数据。

代码语言:javascript
代码运行次数:0
复制
movies_subset = head(movies, 300)

movies_subset$good_rating = movies_subset$rating > mean(movies_subset$rating)
arranged = arrange_venn(movies_subset, sets=genres)

然后,您可以用标准的ggplot2函数和复杂翻转:geom_venn_regiongeom_venn_circlegeom_venn_label_set提供的新geoms来绘制它。

代码语言:javascript
代码运行次数:0
复制
(
    ggplot(arranged)
    + theme_void()
    + coord_fixed()
    + geom_venn_region(movies_subset, sets=genres_subset, alpha=0.2)
    + geom_point(aes(x=x, y=y, color=region), size=1.5)
    + geom_venn_circle(movies_subset, sets=genres_subset, size=2)
    + geom_venn_label_set(movies_subset, sets=genres_subset, aes(label=region), outwards_adjust=2.6)
    + scale_color_venn_mix(movies, sets=genres_subset, guide='none')
    + scale_fill_venn_mix(
          movies, sets=genres_subset,
          guide='none',
          highlight=c('Comedy-Action', 'Drama'),
          inactive_color='white'
      )
)

它还可以注释个别的点(和更多!)

但是,这种实现有一些限制:

  • 它只支持最多三组。
  • 使用大型数据集(>1000个观测值)排列比较慢。
  • 通常需要对排列参数进行微调才能获得所需的结果。
  • 在编写本报告之日,最新版本中有一些小的改进,可以从GitHub安装,但不能从CRAN安装(还)。

免责声明:我是ComplexUpset的作者。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74082830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档