gpt4 book ai didi

r - 如何在 RSM (R) 中填充轮廓颜色和写入轴名称

转载 作者:行者123 更新时间:2023-12-04 09:55:18 26 4
gpt4 key购买 nike

我有以下数据

ct<-structure(list(Conc = c(50L, 100L, 150L, 50L, 100L, 150L, 50L, 
100L, 150L, 100L, 100L, 100L), kGy = c(10L, 10L, 10L, 15L, 15L,
15L, 20L, 20L, 20L, 15L, 15L, 15L), CT.Y. = c(75L, 65L, 51L,
87L, 93L, 89L, 81L, 86L, 78L, 92L, 93L, 92L)), .Names = c("Conc",
"kGy", "CT.Y."), class = "data.frame", row.names = c(NA, -12L))

我正在使用以下 R 代码作为响应面
library(rsm)
ct.rsm<-rsm(CT.Y.~SO(Conc, kGy), data=ct)
persp(ct.rsm, Conc ~ kGy, col=rainbow(50), theta=60,
phi=0, r = 3, d=1, border = NULL, ltheta = -135, lphi = 0
, shade = 0.75, zlab="CT",ylab="Concentration %", col.axis=37, font.lab=2,col.lab=33,
contour=("colors"))

一个问题是如何填充轮廓中的颜色?
另一个问题是关于轴标签。对于 X 轴和 Z 轴的标签,我可以对其进行标记,但是当我想包含 Y 轴的标签时,我收到以下错误。
Error in persp.default(dat$x, dat$y, dat$z, xlab = dat$labs[1], ylab = dat$labs[2],  : 
formal argument "ylab" matched by multiple actual arguments

希望有人能在这方面帮助我。
提前致谢。
Response Surface Plot

最佳答案

我拼凑了你的数据的一个工作示例(没有你的行名)。从 rsm 函数返回的对象是类“rsm”“lm”,因此它由 persp.lm 处理。该函数具有硬编码的 ylab 规范,并且没有重新标记的规定。它可以被修复(用 x 和 ylab 令人费解的反转)。我改了line函数在 draw.cont.line到多边形,它说明需要进一步努力连接端点,如我在下面的评论中提到的:

    persp.lm <- 
function (x, form, at, bounds, zlim, zlab, xlabs, col = "white", xlab=xlab,
contours = NULL, hook, atpos = 3, theta = -25, phi = 20,
r = 4, border = NULL, box = TRUE, ticktype = "detailed", ylab,
... )
{
draw.cont.line = function(line) {
if (cont.varycol) {
cont.col = col
if (length(col) > 1)
cont.col = col[cut(c(line$level, dat$zlim), length(col))][1]
}
polygon(trans3d(line$x, line$y, cont.z, transf), col = cont.col,
lwd = cont.lwd)
}
plot.data = contour.lm(x, form, at, bounds, zlim, xlabs,
atpos = atpos, plot.it = FALSE)
transf = list()
if (missing(zlab))
zlab = ""
facet.col = col
cont = !is.null(contours)
if (mode(contours) == "logical")
cont = contours
cont.first = cont
cont.z = cz = plot.data[[1]]$zlim[1]
cont.col = 1
cont.varycol = FALSE
cont.lwd = 1
if (is.character(contours)) {
idx = charmatch(contours, c("top", "bottom", "colors"),
0)
if (idx == 1) {
cont.first = FALSE
cont.z = plot.data[[1]]$zlim[2]
}
else if (idx == 2) {
}
else if (idx == 3) {
cont.varycol = TRUE
if (length(col) < 2)
col = rainbow(40)
}
else cont.col = contours
}
else if (is.list(contours)) {
if (!is.null(contours$z))
cz = contours$z
if (is.numeric(cz))
cont.z = cz
else if (cz == "top") {
cont.first = FALSE
cont.z = plot.data[[1]]$zlim[2]
}
if (!is.null(contours$col))
cont.col = contours$col
if (!is.null(contours$lwd))
cont.lwd = contours$lwd
if (charmatch(cont.col, "colors", 0) == 1) {
cont.varycol = TRUE
if (length(col) < 2)
col = rainbow(40)
}
}
for (i in 1:length(plot.data)) {
dat = plot.data[[i]]
cont.lines = NULL
if (!missing(hook))
if (!is.null(hook$pre.plot))
hook$pre.plot(dat$labs)
if (cont)
cont.lines = contourLines(dat$x, dat$y, dat$z)
if (cont && cont.first) {
transf = persp(dat$x, dat$y, dat$z, zlim = dat$zlim, xlab=ylab,
theta = theta, phi = phi, r = r, col = NA, border = NA,
box = FALSE)
lapply(cont.lines, draw.cont.line)
par(new = TRUE)
}
if (length(col) > 1) {
nrz = nrow(dat$z)
ncz = ncol(dat$z)
zfacet = dat$z[-1, -1] + dat$z[-1, -ncz] + dat$z[-nrz,
-1] + dat$z[-nrz, -ncz]
zfacet = c(zfacet/4, dat$zlim)
facet.col = cut(zfacet, length(col))
facet.col = col[facet.col]
}
transf = persp(dat$x, dat$y, dat$z, xlab = xlab,
zlab = zlab, zlim = dat$zlim, ylab=ylab,
col = facet.col, border = border, box = box, theta = theta,
phi = phi, r = r, ticktype = ticktype)
if (atpos == 3)
title(sub = dat$labs[5])
if (cont && !cont.first)
lapply(cont.lines, draw.cont.line)
if (!missing(hook))
if (!is.null(hook$post.plot))
hook$post.plot(dat$labs)
plot.data[[i]]$transf = transf
}
invisible(plot.data)
}

persp(ct.rsm, Conc ~ kGy, col=rainbow(50), theta=60, xlab="Something",
phi=0, r = 3, d=1, border = NULL, ltheta = -135, lphi = 0
, shade = 0.75, zlab="CT",ylab="Concentration %", col.axis=37, font.lab=2,col.lab=33,
contour=("colors"))

enter image description here

关于r - 如何在 RSM (R) 中填充轮廓颜色和写入轴名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com