Size is what fraction of cells switched it on; colour is how hard the ones that did switched it on. Two questions in one dot.
In single-cell papers this appears more often than the heatmap.
Seven panels of this paper are dot plots.
One dot is one gene × one cell type. And it carries two values.
Channel
Value carried
Question answered
dot size
percent of cells expressing
how many cells switched this on
dot colour
mean expression (usually z-scored)
how hard the ones that did switched it on
Why separate them? Because a mean alone cannot tell two situations apart —
100% of cells switching on a little, and 10% of cells switching on hard, can have the
same mean. Only the second makes a useful marker gene.
Turn size and colour on and off. What disappears when you keep only one?
Loading…
The same grammar as Fig. 5C of the paper. The data is real TCGA lung expression, and the groups are immune-desert, intermediate and immune-inflamed.
PythonRuns in your browser
A dot plot must always carry two legends — one for size and one for colour.
Miss either and half of every dot is unreadable.
You also have to decide whether the colour is a row z-score or raw expression.
The legend of Fig. 5C says “scaled average expression” — meaning z-scores.
So that colour means “high for this gene”, not “highly expressed”.
A heatmap would have coloured those two cells the same. A dot plot exposes the difference through size.
PythonRuns in your browser
🤔 Check yourself
What does dot size usually represent in a dot plot?
Answer Size is what fraction switched it on, colour is the mean intensity. Splitting the two is exactly the information a heatmap does not have.
🤔 Check yourself
What happens if you make the dot radius proportional to the value?
Answer Area = πr². Double the radius, quadruple the area. People perceive area, so the value looks four times larger.
🤔 Check yourself
What does 'scaled average expression' in the legend mean?
Answer 'Scaled' normally means z-scored. So a red dot means 'high for this gene', not 'highly expressed'.