如何用MOFA2的plot_factors仅绘制密度图而非散点图?
解决MOFA2 plot_factors仅显示密度图的问题
使用MOFA2包的plot_factors函数绘制因子图时,默认输出带散点的配对图,希望仅展示密度图,尝试修改函数源码的dot_size参数为0无效。以下是可行的解决方法:
方法1:利用内置参数直接切换绘图类型
plot_factors本身提供了plot_type参数,设置为"density"即可直接生成仅含密度图的结果,无需修改源码:
plot_factors(MOFAobject.trained, factors = 1:3, color_by = "RISK_CYTO", plot_type = "density" )
注意:需使用训练后的模型对象
MOFAobject.trained,而非未训练的MOFAobject,否则无法生成有效因子图。
方法2:手动提取因子值自定义绘制密度图
如果需要更灵活的样式调整(比如修改填充透明度、配色),可以先提取因子得分,再用ggplot2+GGally手动绘制:
# 提取训练后的因子得分 factors_df <- get_factors(MOFAobject.trained, factors = 1:3) %>% as.data.frame() %>% tibble::rownames_to_column("sample") %>% # 合并分组元数据 dplyr::left_join(get_metadata(MOFAobject.trained), by = "sample") # 用GGally绘制配对密度图 library(ggplot2) library(GGally) ggpairs(factors_df, columns = c("Factor1", "Factor2", "Factor3"), aes(color = RISK_CYTO, fill = RISK_CYTO), upper = list(continuous = "density"), lower = list(continuous = "density"), diag = list(continuous = "densityDiag") ) + theme_bw()
原始代码参考
原绘图代码
plot_factors(MOFAobject, factors = 1:3, color_by = "RISK_CYTO" )
数据准备与模型训练代码
dt = fread("ftp://ftp.ebi.ac.uk/pub/databases/mofa/getting_started/data.txt.gz") head(dt) dt[,group:=NULL] MOFAobject <- create_mofa(dt) print(MOFAobject) data_opts <- get_default_data_options(MOFAobject) head(data_opts) model_opts <- get_default_model_options(MOFAobject) head(model_opts) train_opts <- get_default_training_options(MOFAobject) head(train_opts) MOFAobject <- prepare_mofa( object = MOFAobject, data_options = data_opts, model_options = model_opts, training_options = train_opts )
模型训练代码
outfile = file.path(getwd(),"model.hdf5") MOFAobject.trained <- run_mofa(MOFAobject, outfile)
原重新绘图代码
plot_factors(MOFAobject, factors = 1:3, color_by = "group" )
内容的提问来源于stack exchange,提问作者PesKchan
相关产品推荐
相关产品推荐

