gpt4 book ai didi

r - 添加 facet_grid 面板意味着作为文本和 hline

转载 作者:行者123 更新时间:2023-12-01 09:53:30 31 4
gpt4 key购买 nike

我有一个看起来像这样的数据框。

> head(df)
DGene JGene cdr3_len Sum
1 IGHD1 IGHJ1 0 22
2 IGHD1 IGHJ1 1 11
3 IGHD1 IGHJ1 2 16
4 IGHD1 IGHJ1 3 40
5 IGHD1 IGHJ1 4 18
6 IGHD1 IGHJ1 5 30
...

facet_grid 非常简单。

ggplot(df,aes(x=cdr3_len,y=Sum)) + geom_line() + xlim(c(1,42)) + facet_grid(JGene~DGene,scales="free_y")

并得到看起来像的东西。

enter image description here

我想知道是否有人可以帮助我为每个网格的平均值添加一条 hline。或者可能如何在右上角打印每个网格的平均值。

谢谢,

编辑 - Full link to dataframe

最佳答案

这是一种通过预先计算所需值(根据@jwillis0720 的评论)为 cdr3_len 的平均值添加文本和垂直线的方法:

首先,计算每个面板的 cdr3_len 的平均值,然后将该数据框left_join 到第二个数据框,计算适当的 y 值以放置文本每个面板(因为适当的 y 值仅因 JGene 的级别而异)。

library(dplyr) 

meanData = df %>% group_by(JGene, DGene) %>%
summarise(meanCDR = sum(Sum*cdr3_len)/sum(Sum)) %>%
left_join(df %>% group_by(JGene) %>%
summarise(ypos = 0.9*max(Sum)))

现在是情节:

ggplot(df,aes(x=cdr3_len, y=Sum)) +
geom_vline(data=meanData, aes(xintercept=meanCDR), colour="red", lty=3) +
geom_line() +
geom_text(data=meanData,
aes(label=round(meanCDR,1), x=40, y=ypos), colour="red",
hjust=1) +
xlim(c(1,42)) +
facet_grid(JGene~DGene,scales="free_y")

enter image description here

关于r - 添加 facet_grid 面板意味着作为文本和 hline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335454/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com