Did you try to use DotPlot(..., scale.by = "size")
?
In contrast to the default scale.by= "radius"
, this will link the area (==2*pi*r^2
), not the radius, of the circles to the fraction of cells expressing the feature.
This corresponds much better to our perception of size and will make differences in low values easier to see.
Reading ?Seurat::DotPlot
the scale.min
parameter looked promising but looking at the code it seems to censor the data as well.
Since Seurat's plotting functionality is based on ggplot2
you can also adjust the color scale by simply adding scale_fill_viridis()
etc. to the returned plot. This might also work for size
. Try something like:
DotPlot(...) + scale_size(range = c(5, 10)) # will likely warn about supplying the same scale twice
Apart from this, Seurat's plotting system is not very hackable and I find it much easier to extract the relevant data and plot them myself with ggplot2
.
Yet another comment: Your plot with the strong differences looks much more convincing to me wrt. to the marker property of these genes than the cited plot.
dot.scale
option. This will affect all the points, not only the0s
. $\endgroup$