请考虑以下代码。我正在尝试传递参数main
以将绘图标题更改为“FooBar”,但它似乎被硬编码为“SVM Classification Plot”。
我也尝试使用函数调用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()
答案 0 :(得分:2)
主标题是硬编码的,因此您需要修改函数的代码。
为了避免弄乱软件包,我建议在全局环境中创建一个函数副本并使用它。
例如:
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")
答案 1 :(得分:0)