Segmentation Tutorial Part 8 - veeninglab/BactMAP GitHub Wiki
There is a lot you can do outside of BactMAP to make a plot look nice. I just show a few options below, but check the ggplot2 vignette to get a good overview of what is possible!
Within BactMAP, I saved a few palettes for the use in heatmaps or for
categorical values. colorsCUD()
gives you back a
list of the CUD colorblind-friendly
palette. Furthermore, BactMAP
uses the
viridis
color scales a lot as standard heatmaps.
When it comes to plotting distributions, the following 'geoms' (especially combined) are good to check out:
geom_violin()
geom_dotplot()
geom_jitter()
geom_boxplot()
ggforce::geom_sina()
Finally, there is a whole range of themes you can choose from. I mostly
use theme_minimal()
and theme_classic()
. Noteworthy is also
theme_void()
, which removes all lines and text for you.
Some examples:
width <- ggplot(onePerCell, aes(x=condition, y=maxwum)) +
geom_jitter(alpha=0.3, size=0.2) +
stat_summary(fun.y = median, fun.ymin = median, fun.ymax = median, geom="crossbar") +
theme_classic() +
ylab("cell width (micron)") +
ggtitle("Cell width distribution per segmentation")
area <- ggplot(onePerCell, aes(x=condition, y=area)) +
geom_violin(draw_quantiles=(c(.25, .5, .75)), size=1, aes(fill=condition)) +
scale_fill_manual(values=bactMAP::colorsCUD()) +
theme_light() +
ylab("Cell area (pixel*pixel)") +
ggtitle("Cell area distribution per segmentation") +
theme(legend.position="none")
gridExtra::grid.arrange(width, area, ncol=1)
If you want to summarize your data, it can also be handy to use
aggregate()
or descr()
.
aggregate()
takes data you put in front of the function, and
calculates your given FUN
(in this case the median) by whatever you
put in
“by
”:
medianPerCondition <- aggregate(onePerCell[,c("max_um", "maxwum", "area")], by=list("condition"=onePerCell$condition), FUN=median)
medianPerCondition
## condition max_um maxwum area
## 1 Clement_Oufti 2.122123 0.8750139 560.6055
## 2 Jun_Oufti 1.889762 0.8361367 475.5984
## 3 Jun_SuperSegger 1.879283 0.6799276 383.6188
## 4 Lance_MicrobeJ 1.458337 0.7064676 305.3750
## 5 Renske_Morphometrics 1.446555 0.7859416 393.4439
If you use descr()
(a function from summarytools
) together with
with
, you can do something very similar: describe a given variable
(here: max_um
) by another given variable (here: condition
):
descriptionMax_um <- with(onePerCell,
by(max_um, condition, summarytools::descr))
summarytools::view(descriptionMax_um)
⬅️ Segmentation Tutorial part 7: Statistical Tests | Segmentation Tutorial part 9: Resources ➡️ |
---|