Как установить разные цветовые шкалы для гексбина на основе групп данных? - PullRequest
0 голосов
/ 24 марта 2019

Я генерирую точечный график сравнения двух переменных в кадре данных, где цвета точек были определены по их типу (еще один столбец в кадре данных).Однако есть много точек, которые перекрывают друг друга, и поэтому я хочу оценить, сколько точек есть в данной части сетки.(например: в случае пакета hexbin, можно оценить, сколько значений содержится в данном шестиугольнике в сетке)

Мой вопрос: как я могу использовать пакет hexbin, где для каждой группы у меня будетдругая цветовая шкала, поэтому таким образом можно будет различить группы и получить оценку количества имеющихся значений.

Я пытался гуглить, но не нашел удовлетворительного решения.Все варианты, которые я нашел, были сосредоточены только на различии групп.

Мой код на данный момент:

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 Ответ

1 голос
/ 24 марта 2019

Хотя это не совсем то, что вы просили, это может быть толчок в правильном направлении.

Я не думаю, что одновременно можно использовать несколько цветовых шкал. Вы можете изменить цвет линий вокруг гексов и увеличить толщину линий.

Сначала приведем несколько примеров данных (пожалуйста, предоставьте это сами в будущем)

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

...