使用visreg R将多元图中的回归线限制在数据范围内
我在将“visreg”图中的回归线限制在每个图的数据范围内时遇到问题。它们当前绘制到整个数据帧的范围,当我更改单个限制时,它仍然以可视方式绘制到整个数据帧,但不是正确的数据点。我的示例代码如下:使用visreg R将多元图中的回归线限制在数据范围内,r,linear-regression,lm,data-fitting,R,Linear Regression,Lm,Data Fitting,我在将“visreg”图中的回归线限制在每个图的数据范围内时遇到问题。它们当前绘制到整个数据帧的范围,当我更改单个限制时,它仍然以可视方式绘制到整个数据帧,但不是正确的数据点。我的示例代码如下: CODrysub Humid Wet.sub.himid Dry.sub.himid Semi.arid Arid Hyper.arid Nov 2004 2.20 2.22 2.16 2.03 1.79 1.68 Dec 2
CODrysub
Humid Wet.sub.himid Dry.sub.himid Semi.arid Arid Hyper.arid
Nov 2004 2.20 2.22 2.16 2.03 1.79 1.68
Dec 2004 2.75 2.72 2.52 2.32 2.08 1.93
Jan 2005 2.98 2.92 2.68 2.43 2.18 2.03
Feb 2005 2.81 2.80 2.62 2.37 2.14 2.04
Mar 2005 2.43 2.44 2.33 2.16 1.99 1.96
Apr 2005 2.30 2.25 2.08 2.00 1.90 1.91
SMDrysub
Humid Wet.sub.himid Dry.sub.himid Semi.arid Arid Hyper.arid
Nov 2004 0.26 0.21 0.15 0.08 0.05 0.07
Dec 2004 0.22 0.16 0.10 0.07 0.06 0.08
Jan 2005 0.19 0.12 0.08 0.07 0.07 0.09
Feb 2005 0.18 0.11 0.08 0.07 0.08 0.10
Mar 2005 0.18 0.13 0.09 0.07 0.07 0.10
Apr 2005 0.19 0.15 0.10 0.07 0.06 0.08
library(visreg)
Humida<-cbind(CODrysub[,1],SMDrysub[,1])
Humid2a<-as.data.frame(Humida)
colnames(Humid2a)<-c("CO","SM")
fit1a<-lm(CO~SM,data=Humid2a)
WSHa<-cbind(CODrysub[,2],SMDrysub[,2])
WSH2a<-as.data.frame(WSHa)
colnames(WSH2a)<-c("CO","SM")
fit2a<-lm(CO~SM,data=WSH2a)
##To plot
## Overall plot of an empty frame with dataframe labels
plot(0,xlim=c(0.05,0.31),ylim=c(1.5,3.4),cex.main=1, main= "(a) Scatterplots without soil moisture (Dry season)",xlab=NA,ylab=NA)
par(new=T)
visreg(fit1a,xlab="SM",ylab="CO",points=list(cex=1.2, pch=20,col="deepskyblue4") ,alpha=0.8,line=list(col="deepskyblue4",lwd=2),fill=list(col=adjustcolor("deepskyblue4", alpha.f = 0.09)), xlim=c(0.05,0.31),ylim=c(1.5,3.4),xaxt="n",yaxt="n")
par(new=T)
visreg(fit2a,xlab=NA,ylab=NA,points=list(cex=1.2, pch=20,col="dodgerblue1") ,line=list(col="dodgerblue1",lwd=2),fill=list(col=adjustcolor("dodgerblue1", alpha.f = 0.09)) ,xlim=c(0.05,0.31),ylim=c(1.5,3.4),alpha=0.8,xaxt="n",yaxt="n")
CODrysub
湿-湿-亚干旱-亚干旱-亚干旱-亚干旱-亚干旱-超干旱
2004年11月2.20 2.22 2.16 2.03 1.79 1.68
2004年12月2.75 2.72 2.52 2.32 2.08 1.93
2005年1月2.98 2.92 2.68 2.43 2.18 2.03
2005年2月2.81 2.80 2.62 2.37 2.14 2.04
2005年3月2.43 2.44 2.33 2.16 1.99 1.96
2005年4月2.30 2.25 2.08 2.00 1.90 1.91
SMDrysub
湿-湿-亚干旱-亚干旱-亚干旱-亚干旱-亚干旱-超干旱
2004年11月0.26 0.21 0.15 0.08 0.05 0.07
2004年12月0.22 0.16 0.10 0.07 0.06 0.08
2005年1月0.19 0.12 0.08 0.07 0.07 0.09
2005年2月0.18 0.11 0.08 0.07 0.08 0.10
2005年3月0.18 0.13 0.09 0.07 0.07 0.10
2005年4月0.19 0.15 0.10 0.07 0.06 0.08
图书馆(visreg)
Humida如果您想扩展绘图的x(或y)范围,而不是拟合线的范围,则应首先使用myPlotData创建绘图数据。请使其可复制或提供样本数据。另请参见如何使用ggplot2
实现这一点的一些示例。Hi@JasonAizkalns,我刚刚添加了一些样本数据,希望能够使分析重现。
xlim <- c(0.05,0.31)
ylim <- c(1.5,3.4)
plot(0,xlim=xlim, ylim=ylim, cex.main=1,
main="(a) Scatterplots without soil moisture (Dry season)",
xlab=NA, ylab=NA)
par(new=T)
visreg1a <- visreg(fit1a, plot = FALSE)
plot.visreg(visreg1a,
xlab="SM", ylab="CO", points=list(cex=1.2, pch=20,col="deepskyblue4"),
alpha=0.8, line=list(col="deepskyblue4", lwd=2),
fill=list(col=adjustcolor("deepskyblue4", alpha.f = 0.09)),
xlim=xlim, ylim=ylim, xaxt="n", yaxt="n")
par(new=T)
visreg2a <- visreg(fit2a, plot = FALSE)
plot.visreg(visreg2a,
xlab=NA, ylab=NA, points=list(cex=1.2, pch=20,col="dodgerblue1"),
line=list(col="dodgerblue1",lwd=2),
fill=list(col=adjustcolor("dodgerblue1", alpha.f = 0.09)),
xlim=xlim, ylim=ylim, alpha=0.8,xaxt="n",yaxt="n")
data_combined <- rbind(data.frame(Climate = "Humid", Humid2a),
data.frame(Climate = "Wet-subhumid", WSH2a))
fit_combined <- lm(CO ~ SM*Climate, data = data_combined)
visreg(fit_combined, "SM", by = "Climate", overlay = TRUE,
main = "(a) Scatterplots without soil moisture (Dry season)",
points=list(cex=1))
visreg_data <- visreg(fit_combined, "SM", by = "Climate", plot = FALSE)
plot.visreg(visreg_data, overlay = TRUE, xlim = c(0.05, 0.31))
library(ggplot2)
ggplot(data_combined, aes(SM, CO, color=Climate)) + stat_smooth(method = "lm") + geom_point()