You can adjust the size of the characters used in the scatter plot by selecting the s parameter. You will also probably need to adjust the size of your shape ( figsize ) or the size of your axes (with add_axes ). This is because the scatter symbols are square, in display units, and the x and y axes are not automatically adjusted, so width-one-change = height-one-box.
In other words, the example you provided is a rectangular graph with a width> width, and the height and width are chosen to make the width-one-change-height-of-one-box.
Here is an example of applying these methods:
import matplotlib.pyplot as plt BOX = 5 START = 365 changes = (8, -3, 4, -4, 12, -3, 7, -3, 5, -9, 3)
The method developed for each scatter plot is very hacky, but the key point is that I needed to play with the scatter parameter s and the size of the shape in order to get something like the desired effect.
The resulting graph:

Ideally, you can create your own method, modeled after the scattering method. It will create a custom Collection instance that will include the x, o, and month labels. It also: a) automatically adjusts the aspect of the axis / figure; or b) creates asymmetric characters. This is obviously an advanced option for those who want to contribute as a developer to the Matplotlib project.
source share