【发布时间】:2020-03-14 10:08:46
【问题描述】:
我将非常感谢有关如何将标准化主轴 (SMA) 回归线绘制成多面 ggplot 的建议。我使用了以下代码:
运行 SMA 分析并使用我要绘制的 SMA reg 线系数(截距和斜率)创建一个数据框
smaReg = sma(Y ~ X * Type, data = ExampleData)
summary(smaReg)
smaSummary <- data.frame(Type = 1:6,coef(smaReg))
ggplot 代码使用 geom_abline 绘制 SMA 回归
ModFit <- ggplot(ExampleData, aes(y = Y, x = X, color = Level)) +
geom_point() +
theme_bw() +
theme_classic() +
facet_wrap(~ Type, nrow = 2, ncol = 3) +
theme(strip.background = element_blank(), strip.text = element_text(face = 'bold', size = 12)) +
annotate("segment", x = -Inf, xend = Inf, y = -Inf, yend = -Inf, color = 'black', size = 1) +
annotate("segment", x = -Inf, xend = -Inf, y = -Inf, yend = Inf, color = 'black', size = 1) +
scale_x_continuous(breaks = seq(from = 0, to = 60, by = 20)) +
scale_y_continuous(breaks = seq(from = 0, to = 120, by = 20)) +
geom_abline(data = smaSummary, aes(intercept = elevation, slope = slope)) +
labs(x = expression(paste("Predicted (",mu,"mol m"^{-2},"s"^{-1},")")), y = expression(paste("Observed (",mu,"mol m"^{-2},"s"^{-1},")"))) +
ModFit
此代码还有两个问题需要解决,但我的初学者编码技能还不足以成功解决这些问题:
我使用 annotate() 和 scale_x_continuous 在所有分面图上绘制相同的轴和刻度,但是,此解决方案不会绘制 X 轴刻度,而且我还没有找到一种方法来做到这一点当我做出改变时出错了。
当我运行此绘图代码时,我收到以下错误消息:
wrap_dims(n, params$nrow, params$ncol) 中的错误: nrow * ncol >= n 不正确
在尝试解决此错误的不同方法时,我注意到如果我将 labs() 层更改为如下所示的非常简化的版本:
labs(x = expression(X), y = expression(Y), color = "Level") +
此更改会生成多面图,但每个图上都有所有 SMA 回归。我不知道为什么更改 labs() 层可以生成绘图!关于如何只为每个图绘制相应的 SMA reg 线,同时添加我需要的详细轴标签而不会出现其他问题,我已经没有想法(和谷歌搜索)了。
Faceted plot with simplified labels and all SMA reg lines on each plot
非常感谢您提供有关如何解决这两个剩余问题的任何建议!
【问题讨论】:
-
您能否包含一些示例数据?使用
dput(head(x))函数包含示例数据将有助于其他人回答您的问题。 -
这里有多个问题。我会从分面图/轴中分离出轴标题问题——单独的问题可能有助于社区阅读和回答。
-
您好 Ravic,在发布我的问题之前,我尝试上传数据文件,但找不到方法。有没有办法做到这一点,我错过了?
-
关于分离这两个问题,我以为我已经通过编号来做到这一点。这只是我第三次发问题,有没有特别的方法可以发两个相关的问题?
-
这里是一个链接,描述了如何构建一个好的可重现问题,包括如何包含示例数据:stackoverflow.com/questions/5963269/…