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)
这会将 IsoPlot
的 y
参数转换为数值向量,并在此过程中去除行名称。因此,当需要在末尾添加标题时,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,])))
我用的是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)
这会将 IsoPlot
的 y
参数转换为数值向量,并在此过程中去除行名称。因此,当需要在末尾添加标题时,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,])))