r - 有没有办法手动调整猿/植物工具中系统发育的颜色渐变边界?
问题描述
ape
我正在尝试使用和可视化系统发育最小二乘回归的结果phytools
。具体来说,我一直在尝试创建一个用于预测目的的回归方程,并且我正在研究有多少系统发育信号影响残差(以及因此方程的准确性)。我一直在使用类似于以下的代码来绘制结果(尽管这里针对虚拟数据进行了重新设计)。
library("ape")
library("phytools")
orig_tree<-rtree(n=20)
plot(orig_tree)
values<-data.frame("residuals"=runif(20,min=-1,max=1),row.names=orig_tree$tip.label)
values<-setNames(values$residuals,rownames(values))
residualsignalfit<-fastAnc(orig_tree,values,vars=TRUE,CI=TRUE)
obj<-contMap(orig_tree,values,plot=FALSE)
plot(obj,fsize=.25)
然而,问题在于我有一些物种相对于数据集的其余部分表现出极高的残差。因为颜色梯度的最小值和最大值被设置为实际列的最小值和最大值,所以这会冲掉 90% 的数据集之间的所有对比度,以可视化少数极端异常值。下面的代码重现了我的意思与obj
上面相比的一个例子。
values2<-values
values2[6]<--2
values2[7]<-2
residualsignalfit2<-fastAnc(orig_tree,values2,vars=TRUE,CI=TRUE)
obj2<-contMap(orig_tree,values2,plot=FALSE)
plot(obj2,fsize=.25)
这使得该图看起来好像系统发育信号比实际信号少得多,因为它使除了最极端的异常点之外的所有点都在颜色上相似。
我试图找出一种方法来设置颜色渐变的最小值和最大值,以便任何值≤ -1 是最大可能的红色值,任何值 ≥ 1 是最大可能的蓝色值,从而在其余部分允许更大的对比度的残差。我尝试使用命令
plot(obj2,fsize=.25,lims=c(-1,1))
但正如您从这段代码中看到的那样,这什么也没做。我知道ggplot2
有一个选项可以根据用户输入的值重新调整颜色渐变,但我似乎无法弄清楚如何从 ggplot2 制作系统发育对象ape
或phytools
在 ggplot2 中绘制。
鉴于此,是否有任何方法可以操纵ape/phytools 中的颜色渐变模式,以便可以任意设置颜色渐变的最大和最小边界?
解决方案
您可以通过“挤压”一些任意边界(在我的示例中为 90% 分位数)之间的值来操纵颜色渐变模式,以调整颜色渐变phytools::contMap
:
## The vector of values with two outliers
values_outliers <- values
values_outliers[6] <- -10
values_outliers[7] <- 10
## The original heat plot object
contMap_with_outliers <- contMap(orig_tree, values_outliers, plot = FALSE)
plot(contMap_with_outliers, fsize = .25)
## Removing the outliers (setting them within to the 90% CI)
values_no_outliers <- values_outliers
## Find the 90% boundaries
boundaries <- quantile(values_no_outliers, probs = c(0.05, 0.95))
## Changing the values below the lowest boundary
values_no_outliers <- ifelse(values_no_outliers < boundaries[1], boundaries[1], values_no_outliers)
## Changing the values above the highest boundary
values_no_outliers <- ifelse(values_no_outliers > boundaries[2], boundaries[2], values_no_outliers)
## The heat plot object without outliers
contMap_without_outliers <- contMap(orig_tree, values_no_outliers, plot = FALSE)
plot(contMap_without_outliers, fsize = .25)
推荐阅读
- javascript - 提交运行功能上的 Javascript 按钮
- angular - 规范文件中的 Angular 10 测试,看似随机的案例失败
- python - 为单个查询/连接设置 Hive 优先级
- css - Angular 字体真棒图标作为 css 中的内容呈现为框
- powershell - 使用 Powershell 使用用户 ID 和密码“Connect-PnPOnline”连接到 Sharepoint URL 而无需提示
- azure - 在数据工厂中创建 Azure Batch 活动
- python - 如何将“值”属性强类型为 str 或自定义类型?
- python-3.x - 使用 DateTime 查询 InfluxDB
- r - 如何将 R 数据框中的“Jan_2015”字符日期转换为日期格式,如 01JAN2015 或任何其他日期格式
- bdd - 是否可以定义示例表并将整个表作为数据传递给步骤定义参数?