我是混合效果模型的新手,我需要你的帮助.我在ggplot中绘制了下图:
ggplot(tempEf,aes(TRTYEAR,CO2effect,group=Myc,col=Myc)) +
facet_grid(~N) +
geom_smooth(method="lm",se=T,size=1) +
geom_point(alpha = 0.3) +
geom_hline(yintercept=0, linetype="dashed") +
theme_bw()
Run Code Online (Sandbox Code Playgroud)
但是,我想代表一个混合效果模型,而不是lm
in geom_smooth
,所以我可以包含SITE
一个随机效果.
该模型如下:
library(lme4)
tempEf$TRTYEAR <- as.numeric(tempEf$TRTYEAR)
mod <- lmer(r ~ Myc * N * TRTYEAR + (1|SITE), data=tempEf)
Run Code Online (Sandbox Code Playgroud)
我已经包括TRTYEAR
(治疗年份),因为我也对效果的模式感兴趣,这可能会随着时间的推移而增加或减少.
接下来是我迄今为止从模型中提取绘图变量的最佳尝试,但仅提取了TRTYEAR
= 5,10和15的值.
library(effects)
ef <- effect("Myc:N:TRTYEAR", mod)
x <- as.data.frame(ef)
> x
Myc N TRTYEAR fit se lower upper
1 AM Nlow 5 0.04100963 0.04049789 -0.03854476 0.1205640
2 ECM Nlow 5 0.41727928 0.07342289 0.27304676 0.5615118
3 …
Run Code Online (Sandbox Code Playgroud) 我想计算几列的平均值,创建一个新列,使用dplyr并且不进行融合+合并.
> head(growth2)
CODE_COUNTRY CODE_PLOT IV12_ha_yr IV23_ha_yr IV34_ha_yr IV14_ha_yr IV24_ha_yr IV13_ha_yr
1 1 6 4.10 6.97 NA NA NA 4.58
2 1 17 9.88 8.75 NA NA NA 8.25
3 1 30 NA NA NA NA NA NA
4 1 37 15.43 15.07 11.89 10.00 12.09 14.33
5 1 41 20.21 15.01 14.72 11.31 13.27 17.09
6 1 46 12.64 14.36 13.65 9.07 12.47 12.36
>
Run Code Online (Sandbox Code Playgroud)
我需要数据集中的新列,其中包含所有IV列的平均值.我试过这个:
growth2 %>%
group_by(CODE_COUNTRY, CODE_PLOT) %>%
summarise(IVmean=mean(IV12_ha_yr:IV13_ha_yr, na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
并根据使用的示例返回了几个错误,例如:
Error in NA_real_:NA_real_ : NA/NaN …
Run Code Online (Sandbox Code Playgroud) 让我们从viridis
调色板开始。在我看来,颜色对我来说有点太鲜艳,就我的目的而言,它们看起来太虚构了。因此,我想应用某种透明度或类似方法来降低饱和度:
library(nord)
library(scales)
library(viridis)
library(nord)
show_col(viridis(5))
show_col(viridis(5, alpha=.5))
Run Code Online (Sandbox Code Playgroud)
但是,在ggplot中运行时,它会自动将alpha更改为1并以全强度绘制原始翠绿:
ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill = density)) +
scale_fill_viridis(5, alpha=.5)
Run Code Online (Sandbox Code Playgroud)
在另一个示例中,我发现了相反的问题,即强度/饱和度不足。例如,nord
包装中的“ aurora”调色板很棒,但至少在我看来,它看起来有些褪色,缺乏一定的饱和度。
show_col(nord("aurora",5))
Run Code Online (Sandbox Code Playgroud)
同样,我尝试在内部将Alpha(在这种情况下)设置为1,但与色盲相比,效果有所不同,从而改变了调色板。
show_col(nord("aurora", alpha=.5))
Run Code Online (Sandbox Code Playgroud)
另外,我将alpha设置为alpha()
。但是,这只会更改颜色名称,但是它们看起来相同。
show_col(alpha(nord("aurora",5)), .5)
Run Code Online (Sandbox Code Playgroud)
如何降低的饱和度/强度viridis
并增加的nord
调色板ggplot
?
我可以使用以下方法汇总我的数据并计算平均值和sd值:
summary <- aspen %>% group_by(year,Spp,CO2) %>% summarise_each(funs(mean,sd))
Run Code Online (Sandbox Code Playgroud)
但是,我无法设法计算标准误差.我试过这个没有成功:
summary <- aspen %>% group_by(year,Spp,CO2) %>% summarise_each(funs(mean,sd,se=sd/sqrt(n())))
Run Code Online (Sandbox Code Playgroud) 这是我的数据集的结构:
> dput(data)
structure(list(es = c(0.29603085763985, 0.421393627439682, 0.189653473156549,
0.226685054608428, 0.291373762079697, 0.166533544378467, 0.250586529054368,
0.146320008054403, 0.199565119644333, -0.0819047677231083, 0.15963948187092,
-0.154628141843561, 0.201121044198443, 0.0867981239977565, 0.543870310978598,
0.34547921143505, 0.37557241352574, -0.287318919407836, 0.207937483228907,
0.190143660810163, 0.276182673435993, 0.128596803172119, 0.454753165843559,
0.399237234440439, 0.32075358541748, 0.362664873575803, -0.0865925288159671,
0.51290512543514, 0.186308318839249, 0.147936083867325, 0.243792477087184,
0.625169403695832, 0.110317782120045, 0.217836235313289, 0.171468156841181,
0.50548821117127, 0.164418265301427, -0.00246305543239786, 0.325552346507191,
0.381240606108843, 0.19337350462531, 0.0408803528990759, 0.321815078821239,
0.307642815014319, 0.29603085763985, 0.421393627439682, 0.189653473156549,
0.226685054608428, 0.291373762079697, 0.166533544378467, 0.250586529054368,
0.146320008054403, 0.199565119644333, -0.0819047677231083, 0.15963948187092,
-0.154628141843561, 0.201121044198443, 0.0867981239977565,
0.543870310978598,
0.34547921143505, 0.37557241352574, -0.287318919407836, 0.207937483228907,
0.190143660810163, 0.276182673435993, 0.128596803172119, 0.454753165843559,
0.399237234440439, 0.32075358541748, 0.362664873575803, -0.0865925288159671,
0.51290512543514, 0.186308318839249, 0.147936083867325, 0.243792477087184, …
Run Code Online (Sandbox Code Playgroud) 我可以在 pdf 中生成并保存 .pdf 中的 ggplot 图,包括半透明(alpha):
library(ggplot2)
library(cowplot)
p <- qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = 0.5)
save_plot("plot.pdf",p)
Run Code Online (Sandbox Code Playgroud)
该图形在我的笔记本电脑 (Mac) 中完美显示,既可以作为 pdf 中的单个图形,也可以嵌入到 Word 文档中。但是,多年来我痛苦地经历过,我的数字中的半透明通常不会显示在其他人的计算机上,通常是当他们看到它们嵌入在 Microsoft 办公文档中时。当我不得不在观众面前做一个演示时,这尤其痛苦,突然我在会议室电脑上的Powerpoint演示的数字不显示任何东西,只是一个空白的情节。如果我向期刊提交论文并且收到编辑的电子邮件,说我的数字在 Word 文档中没有显示任何内容,这也是有问题的。由于这些数字在我的 Mac 中看起来不错,我无法确定这些数字是否正确,
我尝试了一些我在网上找到的解决方法,例如:
save_plot("plot.pdf",p, useDingbats=F)
Run Code Online (Sandbox Code Playgroud)
或者
save_plot("plot.pdf",p, device = cairo_pdf, fallback_resolution = 1200
Run Code Online (Sandbox Code Playgroud)
但是我仍然收到来自合作者的电子邮件,说他们看不到这些数字,并且仍然在演示中遇到一些尴尬的时刻,因为数字没有显示任何内容,因此我无法表达自己的观点。
我到底如何才能在不丢失信息的情况下以 pdf 格式保存我的数字?在这一点上,我不知道这个问题是否与在 R 中构建图形的方式有关,或者与 Microsoft Office 处理具有半透明性的 pdf 图形的问题有关。事实是,我的研究网络中没有其他人遇到这些问题。
供参考
> capabilities()
jpeg png tiff tcltk X11 aqua http/ftp
TRUE TRUE TRUE TRUE TRUE TRUE TRUE
sockets libxml …
Run Code Online (Sandbox Code Playgroud)