是否有更改 plot.svm 硬编码标题的解决方法?
Posted
技术标签:
【中文标题】是否有更改 plot.svm 硬编码标题的解决方法?【英文标题】:Is there a workaround to change the plot.svm hardcoded title? 【发布时间】:2013-12-04 01:52:29 【问题描述】:考虑以下代码。我正在尝试传递参数main
将绘图标题更改为“FooBar”,但它似乎被硬编码为“SVM 分类图”。
我还尝试使用函数调用title
,但这会产生重叠两个标题的效果,这是更不可取的。有什么解决方法吗?
library(e1071)
pdf("Play.pdf")
# Generate data
set.seed(1)
x=matrix(rnorm(200*2),ncol=2)
x[1:100,]=x[1:100,]+2
x[101:150,]=x[101:150,]-2
y=c(rep(1,150),rep(2,50))
dat=data.frame(x=x,y=as.factor(y))
train=sample(200,100)
svmfit=svm(y~.,data=dat[train,],kernel="radial", cost=1, gamma=1)
plot(svmfit,dat[train,], main="FooBar")
dev.off()
【问题讨论】:
【参考方案1】:主标题是硬编码的,所以需要修改函数的代码。
为避免弄乱包,我建议在全局环境中创建该函数的副本并使用它。
例如:
myplotSVM <- e1071:::plot.svm
environment(myplotSVM) <- .GlobalEnv
fix(myplotSVM)
然后把函数定义改成:
function (x, data, formula = NULL, fill = TRUE, grid = 50, slice = list(),
symbolPalette = palette(), svSymbol = "x", dataSymbol = "o",
main="SVN classification plot", ...)
然后,在第 56 行
plot.title = title(main = main, # <----- change this part!!!
xlab = names(lis)[2], ylab = names(lis)[1]),
...)
因此标题将是 SVN 分类图,或者您提供的任何 main
参数
您现在可以将其用作
myplotSVM(svmfit,dat[train,], main="FooBar")
【讨论】:
是否可以将修改后的函数定义写入某处的文件中,以便以后可以重复使用,而无需每次需要使用时手动编辑代码? @merlin2011:我不知道是否有更合适的方法来做到这一点......但我想你可以复制代码,将其粘贴到新文件中,然后使用@987654326 @ 在脚本的开头。 很公平。我想知道这是否算作一个错误,我应该为它提交一个补丁。 如果你认为你会经常使用它,你可以先加载e1071
,然后在.Rprofile
中覆盖它。
@Dwin:如何做到这一点?将整个函数粘贴到 .Rprofile 中?【参考方案2】:
在我的例子中,我只是想在标题中添加一些东西,所以这就是我所做的:
plot(smv_model, test_df, battery_power~ram)
title(main= paste(" ", "polynomial", sep=" "))
结果如下:
【讨论】:
以上是关于是否有更改 plot.svm 硬编码标题的解决方法?的主要内容,如果未能解决你的问题,请参考以下文章