尊敬的StackOverflow用户
我需要增加多个GAM图的边界线宽度。我尝试使用<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="../css/index.css" />
<link rel="stylesheet" type="text/css" href="../css/signup.css" />
<link rel="stylesheet" type="text/css" href="../css/home.css" />
<script defer src="../js/homeScript.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<title>Document</title>
</head>
<body>
<div class="container">
<div class="item-title">
<h1 id="item-count"></h1>
</div>
<div class="grid-container" id="container"></div>
</div>
</body>
</html>
,但仅在最后一个图中有效。所以我的问题是如何增加每个图形的边界线宽度。
这是我的密码
box(lwd=3)
我也尝试不使用Gam_AF_species <- gam(Species.AF ~ s(SST) + s(SBT, k=3) + s(Salinity) +
s(Primary.productivity), data = Data)
par(mfrow = c(1,4))
plot.gam(Gam_AF_species, ylab="", xlab="", cex.lab = 1.5, cex.axis= 1.5,
cex.main = 3, lwd = 3, lwd.tick = 3)
box(lwd=3)
,然后图形将一个接一个地显示出来,并且我确实成功地增加了每个图形的边界线宽度。但是,我需要绘制30多个数字,因此这种方式效率不高。希望您能对我提出建议。谢谢。
答案 0 :(得分:0)
您将需要分别绘制每个面板;您对box(lwd = 3)
的呼叫只会在生成最终剧情之后 发出,因此,它只会影响该最终剧情。
要分别绘制各个面板,我将使用select
的{{1}}参数来选择要绘制的平滑块。
最简单的方法是创建一个快速包装函数,将您对plot.gam()
的调用和对您想要的plot.gam()
的调用组合在一起。
一个包装函数可能看起来像这样
box()
所有选项都是经过硬编码的,甚至是要从中绘制的模型都经过硬编码,并且我们认为作为参数传递的唯一想法是通过传递给{{1}的参数my_plot_fun <- function(smooth) {
plot(m, select = smooth,
ylab="", xlab="", cex.lab = 1.5, cex.axis= 1.5,
cex.main = 3, lwd = 3)
box(lwd = 3)
}
可以平滑绘制} smooth
调用中。
然后,我将使用一个简单的select
循环来调用包装函数,以依次绘制每个平滑图形。
这是如何执行此操作的完整示例:
plot.gam()
您可以用for
调用代替最后一位,如
library('mgcv')
# simulate some data
set.seed(1)
df <- gamSim(1)
# fit the GAM
m <- gam(y ~ s(x0) + s(x1) + s(x2) + s(x3), data = df, method = "REML")
# wrapper function for the plot you want
my_plot_fun <- function(smooth) {
plot(m, select = smooth,
ylab="", xlab="", cex.lab = 1.5, cex.axis= 1.5,
cex.main = 3, lwd = 3)
box(lwd = 3)
}
# set up the plot to have 1 row and 4 columns
layout(matrix(1:4, ncol = 4))
# loop over the indices 1, 2, 3, 4 to plot each smooth in turn
for (i in seq_len(4)) {
my_plot_fun(i)
}
# reset the device
layout(1)