On my merged seurat object of 6 samples, when I use the split.by function in tandem with the Dimplot/UMAP plot, all six samples are displayed in series along a commonly labeled 'UMAP_1' x-axis in an order of (these are arbitrary for simplicity, here) Z, Y, X, C, B, A. Instead, I would like to specify these plots to output as a 2 row x 3 column arrangement ordered (1st Row) A, B, C and (2nd Row) X, Y, Z.

I'm assuming I could use something like: group_levels <- c("A", "B", "C", "X", "Y", "Z") to define the order I'd like, but I'm lost on how to get this to arrange the UMAP plots into a 2x3 grid I'd like.

Appreciate any help!

  • $\begingroup$ can you post the code or show with an example dataset (e.g pbmc_small in Seurat) ? I think it is a bit hard to follow in words what you need $\endgroup$ – StupidWolf Jul 29 '20 at 21:04
  • $\begingroup$ I am sure you would prefer an answer with working code, so i encourage you to do the same here $\endgroup$ – StupidWolf Jul 29 '20 at 21:05

how to get this to arrange the UMAP plots into a 2x3 grid

You can use the ncol parameter, which will set the number of columns in the "combined plot".

And for future reference, if you get the help page of the function you are using with ?DimPlot, you will see the .... This means that you can feed additional arguments to other functions that DimPlot() uses. Apparently, CombinePlots() is used under the hood and has an ncol parameter.

  • $\begingroup$ Thank you! ncol solved my problem! Here's the code I ended up using to get the columns and samples ordered, not sure if it was the most straightforward though, but works: object$orig.ident <- factor(x=object$orig.ident, levels = c("A", "B", "C", "X", "Y", "Z")) DimPlot(object, reduction = "umap", split.by = "orig.ident", ncol =3) $\endgroup$ – astro_guy Jul 31 '20 at 17:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.