我正在生成数据框中两个变量的比较的散点图,其中点的颜色由其类型(数据框中的另一列)确定。但是,有许多点相互重叠,因此我想估算网格的给定部分中有多少个点。 (例如:对于十六进制包,可以估计网格上给定六边形中有多少个值)
我的问题是:如何使用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
我得到的图形是:
虽然我想以不同的色标为每个组获取以下图形:
答案 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)
我希望这会有所帮助。
---评论后编辑---
我认为对您来说更好的解决方案是方面。这也使您能够区分重叠的组
data_for_scatter_plot %>%
ggplot(aes(x=Log2FoldChange, y=TT_frequency, color=factor(Type)))+
geom_hex()+
facet_grid(cols = vars(factor(Type)))