Diablo: plotArrow

Hello, I would like to use plotArrow to visualize mRNA,microRNA and Proteins. I get an Arrows plot and can colour label the two groups of samples in Y, but otherwise the plot is not responsive to any of my attempts to e.g. change the shapes or colours of the features (“Blocks”, i.e. RNA, microRNA and Proteins), at the end of the arrows, or even visualize the components (the axis labels remain at “Dimension 1” and “Dimension 2”, without further numerical values at the axes). I have tried the nutrimouse example but also cannot change the output. I have installed the latest development version. Thank you so much for your great support.

Hi @Andreas,

Thanks for contacting us regarding your question about the new plotArrow function.

The output is now a ggplot object which can be fully customised to your own preferences. Please see below for an example. Also, note that the values of dimensions for a multi-block plot cannot be shown as the scales are not the same (the values are standardised to be on the same scale).

library(mixOmics)
packageVersion('mixOmics')
#> [1] '6.15.45'
data(nutrimouse)
Y = unmap(nutrimouse$diet)
data = list(gene = nutrimouse$gene, lipid = nutrimouse$lipid, Y = Y)
design1 = matrix(c(0,1,1,1,0,1,1,1,0), ncol = 3, nrow = 3, byrow = TRUE)
nutrimouse.sgcca <- wrapper.sgcca(X = data,
                                  design = design1,
                                  penalty = c(0.3, 0.5, 1),
                                  ncomp = 3,
                                  scheme = "centroid")

plotArrow(nutrimouse.sgcca, group = nutrimouse$genotype, ind.names = TRUE, 
          legend.title = 'Genotype' )


## custom pch by block
blocks <- names(nutrimouse.sgcca$variates)
pch <- seq_along(blocks)
names(pch) <- blocks
pch
#>  gene lipid     Y 
#>     1     2     3
#>   gene   lipid     Y 
#>   1       2        3 
p <- plotArrow(nutrimouse.sgcca, group = nutrimouse$genotype, ind.names = TRUE, 
               pch = pch, legend.title = 'Genotype')

p


### further customise the ggplot object
# custom labels
p + labs(x = 'Variate 1',
         y = 'Variate 2') +
    guides(
        shape = guide_legend(title = 'BLOCK')
    ) 

## custom shapes
p + scale_shape_manual(values = c(centroid = 1, gene=2, lipid=3, Y=4))
#> Scale for 'shape' is already present. Adding another scale for 'shape', which
#> will replace the existing scale.

Hope it helps,

Al