2014-07-24 20 views
0

根据kernlab文档中的示例,plot绘制了SVM模型的决策权重和边界的好图。编辑默认功能:在kernlab中更改绘图函数的默认颜色R

require(kernlab) 
x<- rbind(matrix(rnorm(n=120,mean=-1,sd=2),,2),matrix(rnorm(120,mean=3,sd=2),,2)) 
y <- matrix(c(rep(1,60),rep(-1,60))) 
svp <- ksvm(x,y,type="C-svc",kernel="vanilladot") 
plot(svp,data=x) 

但是,我想要更改背景渐变的默认颜色。任何建议如何做到这一点?我已经研究过编辑(绘图),但是对于通用函数来说,我不够自在,不知道要改变什么。谢谢!

回答

1

如果用showMethods("plot")然后getMethod("plot", c("ksvm", "missing"))检查,你会看到绘图功能创建自己的颜色:

[...] 
mycols <- c(hcl(0, 100 * (nl:0/nl)^1.3, 90 - 40 * 
    (nl:0/nl)^1.3), rev(hcl(260, 100 * (nl:0/nl)^1.3, 
    90 - 40 * (nl:0/nl)^1.3))) 
[...] 

并将它们用于绘图:

[...] 
filled.contour(xr, yr, matrix(as.numeric(preds), 
    nrow = length(xr), byrow = TRUE), col = mycols, 
[...] 

这意味着你不能轻易改变颜色,它们被硬编码为ksvmplot()

你可以做的是

  1. 使得plot()功能的副本,并重写它,这样你可以覆盖默认颜色。
  2. 写一封电子邮件给包的维护者,并告诉他添加此功能。如果您已经重写了绘图功能,可能会给他发送一个修补程序 。
  3. “编辑该功能。请参阅What ways are there to edit a function in R?