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.
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 like 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
Yet another comment: Your plot with the strong differences looks much more convincing to me wrt. to the marker property of these genese than thee cited plot.