I had problems using pyplot over ssh because it can assume there's a display and fail when it couldn't find one.
Maybe this has changed. I use the OO interface. For example https://matplotlib.org/gallery/api/agg_oo_sgskip.html
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
https://stackoverflow.com/questions/2801882/generating-a-png...