R: Package IsoGene, IsoPlot 标题错误

R: Package IsoGene, IsoPlot title error

我用的是IsoGene CRAN package, but when using the function IsoPlot,我好像不能改标题。

我只是想重现 this paper 的图 3。这是代码:

library(affy)
library(IsoGene)
data(dopamine)
express <- data.frame(exprs(dopamine))
dose <- pData(dopamine)$dose

IsoPlot(dose,express[56,],type="ordinal", add.curve=TRUE)

他们在论文中为这段代码显示的图片是这样的:

但是,我得到了这个,这可能是包中的一个 bug:

你看基因名称没有出现,我没办法显示它,因为 IsoPlot 不接受 "main" 参数。

所以有人知道如何更改 IsoPlot 的标题,或者至少让它像他们论文中的示例一样正确显示基因名称吗?

谢谢!

如果您查看函数代码(通过在控制台中键入 IsoPlot),您可以看到该函数的最后一行是:

title(paste("Gene: ", row.names(y), sep = ""))

这应该会给你想要的标题,因为 row.names(express[56,]) returns 256_at.

但是,如果您查看函数 body 的第一行,您会看到:

y <- as.numeric(y)

这会将 IsoPloty 参数转换为数值向量,并在此过程中去除行名称。因此,当需要在末尾添加标题时,row.name(y) 等于 NULL 并且不会打印任何内容。所以我同意这是一个错误。您可以提交错误报告让软件包作者知道,希望他们能改正它。

目前,作为解决方法,您可以修改该函数。为此,从控制台复制函数代码并将其粘贴到 R 脚本中。然后给函数起个名字,让函数的第一行看起来像这样:

myIsoPlot = function (x, y, type = c("continuous", "ordinal"), add.curve = FALSE) {

将此添加为函数的第一行(在 y <- as.numeric(y) 之前):

my_title = row.names(y)

将函数的最后一行更改为:

title(paste("Gene: ", my_title, sep = ""))

现在加载函数,然后 运行 它:

myIsoPlot(dose, express[56,], type="ordinal", add.curve=TRUE)

如果您不想修改函数,这里有一些技巧:您可以 "cover" 使用白色矩形的默认标题,然后添加您自己的标题。但是你需要手动放置白色矩形(你可以编写代码来自动化它,但它可能比仅仅修改 IsoPlot 函数更工作):

IsoPlot(dose, y=express[56,], type="ordinal", add.curve=TRUE)

# White rectangle to cover default title
rect(0, 11, 10, 15, xpd=TRUE, col="white", border="white")

# New title
title(paste("Gene:", row.names(express[56,])))