是否有解决方法来更改plot.svm硬编码标题?

时间:2013-11-20 07:18:04

标签: r libsvm

请考虑以下代码。我正在尝试传递参数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()

2 个答案:

答案 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)

就我而言,我只是想在标题中添加一些内容,所以这就是我所做的:

plot(smv_model, test_df, battery_power~ram)
title(main= paste("                                      ", "polynomial", sep=" "))

结果如下: enter image description here