Skip to contents


Produces a Genotype by Yield*Trait biplot (GTY) proposed by Yan and Fregeau-Reid (2018).


  traits = everything(),
  ideotype = NULL,
  weight = NULL,
  prefix = "Y",
  centering = "trait",
  scaling = "sd",
  svp = "trait"



The dataset containing the columns related to Genotypes, Yield, and Traits.


The name of the column that contains the levels of the genotypes.


The column containing the yield values.


The column(s) with the traits values. Defaults to NULL. In this case, all numeric traits in .data, except that in yield are selected. To select specific traits from .data, use a list of unquoted comma-separated variable names (e.g. traits = c(var1, var2, var3)), an specific range of variables, (e.g. traits = c(var1:var3)), or even a select helper like starts_with("N").


A vector of "h" or "l" with the same length of traits to define which trait is desired to increase or decrease. By default (ideotype = NULL) for all numeric traits in traits are assumed that high values is desirable. Following the order of the traits selected in traits, use "h" to indicate the traits in which higher values are desired or "l" to indicate the variables in which lower values are desired. Then, yield will be multiplied by traits with "h" and divided by traits with "l" to generate the Genotype by yield*trait table. For example, ideotype = c("h, h, l") will assume that the ideotype has higher values for the first two traits and lower values for the last trait.


The weight assumed for each trait. Similar to ideotype argument, provide a numeric vector of the same length of traits. Suggested values are between 0 and 2.


The prefix used in the biplot for the yield*trait combinations. Defaults to "Y".


The centering method. Must be one of the 'none | 0', for no centering; 'global | 1', for global centered (T+G+GYT); 'trait | 2' (default), for trait-centered (G+GYT); or 'double | 3', for double centered (GYT). A biplot cannot be produced with models produced without centering.


The scaling method. Must be one of the 'none | 0', for no scaling; or 'sd | 1' (default), so that the mean for each trait or yield-trait combination becomes 0 and the variance becomes unit.


The method for singular value partitioning. Must be one of the 'genotype | 1', (The singular value is entirely partitioned into the genotype eigenvectors, also called row metric preserving); 'trait | 2', default, (The singular value is entirely partitioned into the trait eigenvectors, also called column metric preserving); or 'symmetrical | 3' (The singular value is symmetrically partitioned into the genotype and the trait eigenvectors This SVP is most often used in AMMI analysis and other biplot analysis, but it is not ideal for visualizing either the relationship among genotypes or that among the traits).


The function returns a list of class gge that is compatible with the function plot() used in gge().

  • data The Genotype by yield\*trait (GYT) data.

  • ge_mat The Genotype by yield\*trait (GYT) data (scaled and centered).

  • coordgen The coordinates for genotypes for all components.

  • coordenv The coordinates for traits for all components.

  • eigenvalues The vector of eigenvalues.

  • totalvar The overall variance.

  • labelgen The name of the genotypes.

  • labelenv The names of the traits.

  • labelaxes The axes labels.

  • centering The centering method.

  • scaling The scaling method.

  • svp The singular value partitioning method.

  • d The factor used to generate in which the ranges of genotypes and traits are comparable when singular value partitioning is set to 'genotype' or 'trait'.

  • grand_mean The grand mean of the trial.

  • mean_gen A vector with the means of the genotypes.

  • mean_env A vector with the means of the traits.

  • scale_var The scaling vector when the scaling method is 'sd'.


Yan, W., & Fregeau-Reid, J. (2018). Genotype by Yield\*Trait (GYT) Biplot: a Novel Approach for Genotype Selection based on Multiple Traits. Scientific Reports, 8(1), 1-10. doi:10.1038/s41598-018-26688-8


Tiago Olivoto


# \donttest{
# GYT biplot for all numeric traits of 'data_g'
# KW (kernel weight) considered as 'yield',
mod <- gytb(data_g, GEN, KW)
#> Warning: ggrepel: 1 unlabeled data points (too many overlaps). Consider increasing max.overlaps

# }