As in the comment by @furas, you can basically just play around with the figure size and font size until you get something that looks like you need, e.g.,: with
fig, ax = plt.subplots(figsize=(1, 2))
and
for item in data:
ax.text(item['x'], item['y'], item['char'],
fontsize=26, family='monospace', ha='center', va='bottom')
I get something pretty close to what you request: