A short note about GGE and GGB biplots.
library("knitr")
knitr::opts_chunk$set(fig.align="center", fig.width=6, fig.height=6)
options(width=90)
An example of a GGE (genotype plus genotype-by-environment) biplot similar to figure 12 of Yan and Tinker (2006). The flip
argument can be used to flip the x and y axes so that biplots are oriented as desired. Because the SVD factorization is not unique,
library(agridat)
## The desplot function is now in the 'desplot' package.
## The gge function is now in the 'gge' package.
data(yan.winterwheat)
dat1 <- yan.winterwheat
library(gge)
m1 <- gge(yield~gen*env, dat1, scale=FALSE)
biplot(m1, title="yan.winterwheat - GGE biplot",
flip=c(1,0), origin=0, hull=TRUE)
Many people prefer to use ‘standardized’ biplots, in which the data for each environement has been centered and scaled. For standardized biplots, a unit circle is drawn. Environment vectors that reach out to the unit circle are perfectly represented in the two dimensional plane.
m2 <- gge(yield~gen*env, dat1, scale=TRUE)
biplot(m2, title="yan.winterwheat - GGE biplot",
flip=c(1,1), origin=0)
As seen above, the environment vectors are fairly long, so that relative performance of genotypes in environments can be assessed with reasonable accuracy. In contrast, a biplot based on principal components 2 and 3 has shorter vectors which should not be interpreted.
biplot(m2, title="yan.winterwheat - GGE biplot - PC 2 & 3",
comps=c(2,3), flip=c(1,1), origin=0)
Laffont, Hanafi, and Wright (2007) showed how to partition the sums-of-squares simultaneously along the principal component axes and along ‘G’ and ‘GxE’ axes.
plot(m1, title="yan.winterwheat")
The mosaic plot above shows that the first principal component axis is capturing almost all of the variation between genotypes, so that a projection of the genotype markers onto the first principal component axis is a good overall representation of the rankings of the genotypes.
Laffont, Wright, and Hanafi (2013) presented GGB (genotype plus genotype-by-block of environments) biplots, which are useful to enhance the view of mega-environments consisting of multiple locations.
library(agridat)
data(crossa.wheat)
dat2 <- crossa.wheat
# Define mega-environment groups of locations
dat2$eg <- ifelse(is.element(dat2$loc,
c("KN","NB","PA","BJ","IL","TC",
"JM","PI","AS","ID","SC","SS",
"SJ","MS","MG","MM")), "Grp1", "Grp2")
library(gge)
# Specify env.group as column in data frame
m3 <- gge(yield~gen*loc, dat2, env.group=eg, scale=FALSE)
biplot(m3, title="crossa.wheat - GGB biplot")
## Session info
sessionInfo()
## R version 3.3.1 (2016-06-21)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 7 x64 (build 7601) Service Pack 1
##
## locale:
## [1] LC_COLLATE=C LC_CTYPE=English_United States.1252
## [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
## [5] LC_TIME=English_United States.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] gge_1.1 agridat_1.13 knitr_1.14
##
## loaded via a namespace (and not attached):
## [1] plyr_1.8.4 magrittr_1.5 formatR_1.4 htmltools_0.3.5 tools_3.3.1
## [6] reshape2_1.4.1 yaml_2.1.13 Rcpp_0.12.7 stringi_1.1.2 rmarkdown_1.0
## [11] stringr_1.1.0 digest_0.6.10 evaluate_0.9
Laffont, Jean-Louis, Mohamed Hanafi, and Kevin Wright. 2007. “Numerical and Graphical Measures to Facilitate the Interpretation of GGE Biplots.” Cs 47: 990–96. doi:10.2135/cropsci2006.08.0549.
Laffont, Jean-Louis, Kevin Wright, and Mohamed Hanafi. 2013. “Genotype Plus Genotype-by-Block of Environments Biplots.” Crop Science 53 (6): 2332–41. doi:10.2135/cropsci2013.03.0178.
Yan, Weikai, and Nicholas A Tinker. 2006. “Biplot Analysis of Multi-Environment Trial Data: Principles and Applications.” Canadian Journal of Plant Science 86: 623–45. doi:10.4141/P05-169.