如何根据数据组为hexbin设置不同的色阶?

时间:2019-03-24 12:30:42

标签: r ggplot2 overlap

我正在生成数据框中两个变量的比较的散点图,其中点的颜色由其类型(数据框中的另一列)确定。但是,有许多点相互重叠,因此我想估算网格的给定部分中有多少个点。 (例如:对于十六进制包,可以估计网格上给定六边形中有多少个值)

我的问题是:如何使用hexbin程序包,对于每个组,我将使用另一个色标,因此可以区分这些组并评估其中有多少个值。

我试图用Google搜索它,但是没有找到令人满意的解决方案。 我发现的所有选项仅着眼于各组之间的区别。

到目前为止,我的代码:

ggplot(data_for_scatter_plot,aes(x=Log2FoldChange, y=TT_frequency, color=factor(Type))) +
geom_point(alpha = 0.6)

我的data_for_scatter_plot数据框为:

 Gene             Log2FoldChange  length  TT_frequency  Type
 ENSG00000007968  1.928153        24791   0.05623008    up_regulated
 ENSG00000009724  2.209263        20711   0.05842306    down_regulated
 ENSG00000010219  1.794972        53099   0.08250626    other_genes
 ENSG00000053438  3.815411        2479    0.10851150    up_regulated

我得到的图形是:

scatterplot

虽然我想以不同的色标为每个组获取以下图形:

hexbin plot

1 个答案:

答案 0 :(得分:0)

虽然这与您要求的不完全相同,但可能是朝正确方向的推动。

我不认为可以同时使用多个颜色/连续刻度。您可以更改六边形周围线条的颜色,并增加线条粗细。

首先提供一些示例数据(请您自己提供)

library(tidyverse)
library(hexbin)

set.seed(1)

data_for_scatter_plot <- 
  crossing(
  tibble(Trial =seq(1:100)),
  tibble(Extra = seq(1:10)),
  tribble( 
        ~Gene,          ~Log2FoldChange,  ~length,  ~TT_frequency,  ~Type, 
        "ENSG00000007968",  1.928153,        24791,   0.05623008,    "up_regulated",
        "ENSG00000009724",  2.209263,        20711,   0.05842306,    "down_regulated",
        "ENSG00000010219",  1.794972,        53099,   0.08250626,    "other_genes",
        "ENSG00000053438",  3.815411,        2479 ,   0.10851150,    "up_regulate")) %>% 
    mutate(
      Log2FoldChange = Log2FoldChange*0.001*Trial+rnorm(n=n(), mean=0, sd = 0.1),
      TT_frequency = TT_frequency-0.00001*Trial+rnorm(n=n(), mean=0, sd = 0.005)
      )


  data_for_scatter_plot  

    # A tibble: 4,000 x 7
   Trial Extra Gene            Log2FoldChange length TT_frequency Type          
   <int> <int> <chr>                    <dbl>  <dbl>        <dbl> <chr>         
 1     1     1 ENSG00000007968        -0.0607  24791       0.0505 up_regulated  
 2     1     1 ENSG00000009724         0.0206  20711       0.0622 down_regulated
 3     1     1 ENSG00000010219        -0.0818  53099       0.0853 other_genes   
 4     1     1 ENSG00000053438         0.163    2479       0.102  up_regulate   
 5     1     2 ENSG00000007968         0.0349  24791       0.0461 up_regulated  
 6     1     2 ENSG00000009724        -0.0798  20711       0.0614 down_regulated
 7     1     2 ENSG00000010219         0.0505  53099       0.0754 other_genes   
 8     1     2 ENSG00000053438         0.0776   2479       0.117  up_regulate   
 9     1     3 ENSG00000007968         0.0595  24791       0.0654 up_regulated  
10     1     3 ENSG00000009724        -0.0283  20711       0.0653 down_regulated
# ... with 3,990 more rows

现在是剧情:

data_for_scatter_plot %>% 
  ggplot(aes(x=Log2FoldChange, y=TT_frequency, color=factor(Type)))+
  geom_hex(size = 1)

enter image description here

我希望这会有所帮助。

---评论后编辑---
我认为对您来说更好的解决方案是方面。这也使您能够区分重叠的组

data_for_scatter_plot %>% 
  ggplot(aes(x=Log2FoldChange, y=TT_frequency, color=factor(Type)))+
  geom_hex()+
  facet_grid(cols = vars(factor(Type)))

enter image description here