Question: How to make a complicated dot plot for scRNAseq marker genes with ggplot2?
2
gravatar for grayapply2009
9 days ago by
grayapply2009240
United States
grayapply2009240 wrote:

I like this dot plot (Figure a) for showing marker gene expression patterns for the clusters. Any ideas about how to make this plot with ggplot2? Some pseudocode would be enough.

enter image description here

ADD COMMENTlink modified 9 days ago by zx87549.9k • written 9 days ago by grayapply2009240
3
gravatar for jared.andrews07
9 days ago by
jared.andrews078.3k
Memphis, TN
jared.andrews078.3k wrote:

Use dittoDotPlot from the dittoSeq package. Much easier than from scratch. The resulting plot is still a ggplot2 object, so you can customize as you'd like. Though the function itself is also quite flexible. Works natively on SingleCellExperiment, Seurat, or SummarizedExperiment objects and can use gene expression and/or continuous metadata variables as desired.

So all you'd have to do is grab your top 5 markers for each cluster or what have you and feed them in along with your data object:

your_markers <- c("Gfap", "Vim", "Aqp4")
dittoDotPlot(sce_seurat_or_se_object, your_markers, group.by = "cluster_metadata_column") + coord_flip()
ADD COMMENTlink written 9 days ago by jared.andrews078.3k

Thank you, my friend. Sounds like a perfect solution to me. I’m trying it now.

ADD REPLYlink written 9 days ago by grayapply2009240

harmony also might help here.

ADD REPLYlink written 9 days ago by Shaminur100

How so? Harmony has no viz functions.

ADD REPLYlink written 8 days ago by jared.andrews078.3k

I just noticed Seurat has a DotPlot function that does the same thing.

ADD REPLYlink written 8 days ago by grayapply2009240

That it does, if you're using Seurat. I like to think the dittoSeq version is more flexible given it handles metadata variables and multiple data formats, but I was involved in its development so I am a bit biased.

ADD REPLYlink written 7 days ago by jared.andrews078.3k

Hi Jared, since you are one of the developers of dittoSeq, is it possible to revise the dittoDotPlot function so that it makes the plot like the one in the example by default?

ADD REPLYlink written 7 days ago by grayapply2009240

What do you mean exactly? I can tell you now that the cell numbers in each cluster are best added after the fact in Illustrator or your favorite figure editor. Getting the clusters labeled and oriented as in that figure would be something like:

dittoDotPlot(
    myRNA, c("gene1", "gene2", "gene3", "gene4"),
    group.by = "clustering") + scale_y_discrete(position = "right") + coord_flip()
ADD REPLYlink written 7 days ago by jared.andrews078.3k

I mean the aesthetics of the figure but I guess it's no big deal since the result is a ggplot object. Thanks. I already made the figure with your help.

ADD REPLYlink written 7 days ago by grayapply2009240
1
gravatar for zx8754
9 days ago by
zx87549.9k
London
zx87549.9k wrote:

From scratch, this is just a start, depends how far you want to go to have the same exact plot:

library(ggplot2) # ggplot2_3.3.3

# example data
d <- mtcars[1:10, ]
d$car <- rownames(d)
d$carb <- as.factor(d$carb)
d$cyl <- as.factor(d$cyl)

# plot
ggplot(d, aes(car, carb, size = qsec, fill = cyl)) +
  geom_point(shape = 21) +
  theme_light() +
  guides(x =  guide_axis(angle = 90))

But, I'd first find that paper where this plot is coming from, then check if they have anything at GitHub.

ADD COMMENTlink written 9 days ago by zx87549.9k

Thank you. It's a good way to customize the graph.

ADD REPLYlink written 8 days ago by grayapply2009240
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1141 users visited in the last hour
_