You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的neuralnet包绘制的神经网络图中添加标题

解决neuralnet神经网络绘图无法添加标题的问题

在使用R的neuralnet包训练神经网络后,调用自带的plot()函数绘制网络结构时,不管用main还是title参数都没法添加标题。原训练和绘图代码如下:

library(neuralnet)
data(infert, package="datasets")
net.infert <- neuralnet(case~parity+induced+spontaneous, infert, 
                        err.fct="ce", linear.output=FALSE, likelihood=TRUE)

plot(net.infert, rep="best")

我试过这两种写法,都没效果:

plot(net.infert, rep="best", title = "Incisors")
plot(net.infert, rep="best", main= "Incisors")

问题原因

neuralnet的绘图功能是基于grid图形系统实现的,而我们常用的main参数属于基础绘图系统,所以直接传参不会生效。

解决方案

方法1:用grid包手动加标题

加载grid包后,在绘制完神经网络图之后,调用grid.text()来添加标题,还能自定义位置和字体样式:

library(neuralnet)
library(grid)

data(infert, package="datasets")
net.infert <- neuralnet(case~parity+induced+spontaneous, infert, 
                        err.fct="ce", linear.output=FALSE, likelihood=TRUE)

# 先绘制神经网络图
plot(net.infert, rep="best")
# 添加标题:y参数控制垂直位置,gp设置字体大小、加粗等
grid.text("Incisors", y = 0.95, gp = gpar(fontsize = 14, fontface = "bold"))

方法2:修改plot函数,支持main参数(进阶)

如果需要频繁使用带标题的绘图,可以修改neuralnet包的plot.nn函数,让它支持main参数:

# 复制原plot.nn函数
my_plot.nn <- neuralnet:::plot.nn
# 给函数添加标题逻辑
body(my_plot.nn)[[length(body(my_plot.nn)) + 1]] <- quote(
  if (!missing(main)) {
    grid.text(main, y = 0.95, gp = gpar(fontsize = 14, fontface = "bold"))
  }
)
# 替换包内的原函数(也可以直接调用my_plot.nn)
assignInNamespace("plot.nn", my_plot.nn, "neuralnet")

# 之后就能直接用main参数了
plot(net.infert, rep="best", main="Incisors")

内容的提问来源于stack exchange,提问作者antecessor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:20:48