R ggplot2:如何根据不同的列制作直方图和颜色?

魔法生菜

我试图用一些数据生成一个,但我找不到让工作来实现我想要的东西的方法。

对于上下文,我的数据如下所示:(列名)

​

|  Name  |  Total Enrichment % (A+B+C+D)  |  %A  |  %B  |  %C  |  %D  |

我想生成一个直方图,显示总浓缩列的分布,然后用 4 种颜色填充该列,显示 A、B、C 和 D 的不同百分比。

我已经尝试将数据转换为长格式,但仍然无法准确获得我想要的数据。

任何建议都会非常有帮助!非常感谢你!

这是一个例子(它不是原始数据,只是其中的一小部分):

    dat <- read.table(text = "Name Total A B C D
1 0.1396104 0.029220779 0.009740260 0.029220779 0.07142857
2 0.1250000 0.010869565 0.021739130 0.016304348 0.07608696
3 0.1337580 0.006369427 0.000000000 0.025477707 0.10191083
4 0.1239669 0.016528926 0.024793388 0.033057851 0.04958678
5 0.1242938 0.011299435 0.016949153 0.039548023 0.05649718
6 0.1311475 0.000000000 0.000000000 0.021857923 0.10928962
7 0.1376147 0.004587156 0.004587156 0.004587156 0.12385321
8 0.1574074 0.046296296 0.018518519 0.032407407 0.06018519
9 0.1269036 0.010152284 0.010152284 0.020304569 0.08629442", sep = "",    header=T)

我的目标是使用总富集数据创建一个直方图,但每列都填充了其他贡献变量(A、B、C 和 D)

谢谢!

编辑

感谢 StupidWolf 惊人的帮助和评论,我可以更接近我想要的东西。

这是我到目前为止的内容(它并不完美,但到目前为止还不错)

在此处输入图片说明

我想做的是将 y 轴设为对数刻度,因为我在较低范围内有很多数据,而且我也对具有更高丰富度的数据感兴趣。另外,有谁知道为什么栏没有填满?为什么会有这些空白?

再次非常感谢您的帮助和耐心!

笨狼

我正在对您想要做什么进行有根据的猜测,首先让我们获取一些数据:

set.seed(321)
library(ggplot2)
library(dplyr)
dat = data.frame(Name=1:500,matrix(runif(500*4),ncol=4))
colnames(dat)[-1] = LETTERS[1:4]
dat$Total = rowSums(dat[,-1])

如果要计算A、B、C、D对Total的每个binned值的贡献,那么我们需要做Total的直方图,看起来像这样,我们存储breaks来对每一行进行分类:

his_all = hist(dat$Total,br=40)
dat$bin = cut(dat$Total,br=his_all$breaks,labels=his_all$mids)

在此处输入图片说明

在上面,我使用直方图的中间来表示再次绘制条形图的位置。因此有一个将因子标签转换为数字的步骤。然后我们需要计算 A 对 D 对每个总数的贡献,然后旋转更长的时间并绘制:

dat %>% 
mutate_at(c("A","B","C","D"),~.x/Total) %>% 
pivot_longer(A:D) %>% 
mutate(bin=as.numeric(as.character(bin))) %>% 
ggplot(aes(x=bin,y=value,fill=name)) + 
geom_col() +
xlab("enrichment")

在此处输入图片说明

另一种可视化数据的方法:

dat$interval = cut_interval(dat$Total,5)

dat %>% mutate_at(c("A","B","C","D"),~.x/Total) %>% 
group_by(interval) %>% select(c(interval,A:D)) %>% 
summarize_all(mean) %>% pivot_longer(-interval) %>%
ggplot(aes(x=interval,y=value,fill=name)) + geom_col()

在此处输入图片说明

这会向您显示 Total 的每个范围,A/B/C/D 的比例对它的贡献。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R ggplot2:如何按组为每列和颜色生成直方图?

ggplot2 r 中各个 bin 的颜色直方图

R:用ggplot2和lapply制作几个条形图:如何根据列表插入字幕?

ggplot2,r在直方图中的不同bin宽度

R ggplot2:如何绘制具有纯色和透明笔触并根据颜色着色的geom_point?

如何在ggplot2(R)中的水平轴上制作带有时间的直方图

R ggplot2 直方图 bin 分配

R中的ggplot2覆盖直方图

R中具有ggplot2的不同类别直方图

R ggplot2 和 boxplot() - 不同的圖?

在R ggplot2中制作戒指

R,如何使用变量在 ggplot2 中选择数据帧的不同列?

如何在ggplot / R中制作此直方图?

R:ggplot2直方图填充躲避-防止部分重叠

轴但直方图中无帧(R:ggplot2)

R:使用ggplot2按组镜像直方图

R - ggplot2 在直方图上绘制对数正态曲线

为ggplot2(r)中的单个颜色框图/点定义图例和颜色

如何在R中绘制不同颜色的直方图

为什么R hist和ggplot直方图输出如此不同?

拉伸x轴并将不同的binwidth应用于ggplot2 R的直方图中的值范围

渐变不同颜色的树形图上的子组ggplot2 R

ggplot2 - R:在曼哈顿图中为我的组添加不同的颜色

如何从R中的分组列制作单个直方图

R和ggplot 2:如何在ggplot2 R图中设置轴的分位数限制?

如何使用ggplot2在R中制作具有透明背景的图形?

如何使用列名(字符串)作为输入在R函数内部制作ggplot2图?

如何使用ggplot2在R中为多个Y系列制作线性拟合线?

如何用ggplot2制作哑铃图?未正确绘制 R