r - R ggplot2:将列的值放在堆叠条的顶部
问题描述
可能有重复,但我找不到适用于我的特定情况的答案......
我只有一个非常简单的数据框,如下图所示,我想在堆积条形图中显示两列 ( Number_NonHit_Cells
, ) 中的计数,另一列 ( ) 的值放在堆积条形图的顶部。Number_Hit_Cells
Freq
下面的 MWE 是迄今为止我能得到的最好的,但我只需要Freq
一次的值,并且在条形图的最顶部组合......
如果Freq
可以在ggplot2
调用中计算就更好了。
这是我的 MWE:
clono_df_long <- data.frame(Clonotype=LETTERS[1:5], Number_Hit_Cells=c(234,56,568,34,46),
Number_NonHit_Cells=c(c(52,12,234,21,31)))
clono_df_long$Clonotype_Size <- clono_df_long$Number_Hit_Cells+clono_df_long$Number_NonHit_Cells
clono_df_long$Freq <- round(clono_df_long$Number_Hit_Cells/clono_df_long$Clonotype_Size,4)*100
clono_df_long <- as.data.frame(tidyr::pivot_longer(clono_df_long,
-c(Clonotype,Clonotype_Size,Freq),
names_to = "Cells", values_to = "Value"))
clono_df_long$Clonotype <- factor(clono_df_long$Clonotype, levels=unique(clono_df_long$Clonotype))
clono_df_long$Cells <- factor(clono_df_long$Cells, levels=c('Number_NonHit_Cells','Number_Hit_Cells'))
P <- ggplot2::ggplot(clono_df_long, ggplot2::aes(x=Clonotype, y=Value, fill=Cells)) +
ggplot2::geom_bar(stat="identity") +
ggplot2::scale_fill_manual(values=c('gray70', 'gray40')) +
ggplot2::geom_text(ggplot2::aes(label=paste0(Freq,'%')), vjust=-1) +
ggplot2::theme_light()
grDevices::pdf(file='test.pdf', height=6, width=6)
print(P)
grDevices::dev.off()
产生这个:
解决方案
你可以试试
clono_df_long$Freq <- ifelse(clono_df_long$Cells == "Number_NonHit_Cells", clono_df_long$Freq, NA)
ggplot2::ggplot(clono_df_long, ggplot2::aes(x=Clonotype, y=Value, fill=Cells)) +
ggplot2::geom_bar(stat="identity") +
ggplot2::scale_fill_manual(values=c('gray70', 'gray40')) +
#ggplot2::geom_text(ggplot2::aes(label=paste0(Freq,'%')), vjust=-1) +
ggplot2::theme_light() +
ggplot2::geom_text(aes(label = scales::percent(Freq/100) ),position = "stack")
推荐阅读
- python - 手动和使用 python 查询打开 .csv 文件时数据值的差异
- apache-poi - 如何删除页面和页脚 poi java 之间的额外空间
- c# - CustomVision API 返回“操作返回了无效的状态代码:'Bad Request'”
- quarkus - How to fix 'org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException' in quarkus native image
- html - VS Code:自定义代码段中的变量
- ios - 如何将数组的所有图像转换为数据
- javascript - P 标签的 JQuery 选择器
- android - How to do a custom app bar from large title to small with animation?
- vectorization - 用户警告:您的 stop_words 可能与您的预处理不一致
- javascript - 有没有办法停止前一个循环附加下一个循环?