1""" 2=============== 3Tick formatters 4=============== 5 6Show the different tick formatters. 7""" 8 9import numpy as np 10import matplotlib.pyplot as plt 11import matplotlib.ticker as ticker 12 13 14# Setup a plot such that only the bottom spine is shown 15def setup(ax): 16 ax.spines['right'].set_color('none') 17 ax.spines['left'].set_color('none') 18 ax.yaxis.set_major_locator(ticker.NullLocator()) 19 ax.spines['top'].set_color('none') 20 ax.xaxis.set_ticks_position('bottom') 21 ax.tick_params(which='major', width=1.00, length=5) 22 ax.tick_params(which='minor', width=0.75, length=2.5, labelsize=10) 23 ax.set_xlim(0, 5) 24 ax.set_ylim(0, 1) 25 ax.patch.set_alpha(0.0) 26 27 28fig = plt.figure(figsize=(8, 6)) 29n = 7 30 31# Null formatter 32ax = fig.add_subplot(n, 1, 1) 33setup(ax) 34ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00)) 35ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25)) 36ax.xaxis.set_major_formatter(ticker.NullFormatter()) 37ax.xaxis.set_minor_formatter(ticker.NullFormatter()) 38ax.text(0.0, 0.1, "NullFormatter()", fontsize=16, transform=ax.transAxes) 39 40# Fixed formatter 41ax = fig.add_subplot(n, 1, 2) 42setup(ax) 43ax.xaxis.set_major_locator(ticker.MultipleLocator(1.0)) 44ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25)) 45majors = ["", "0", "1", "2", "3", "4", "5"] 46ax.xaxis.set_major_formatter(ticker.FixedFormatter(majors)) 47minors = [""] + ["%.2f" % (x-int(x)) if (x-int(x)) 48 else "" for x in np.arange(0, 5, 0.25)] 49ax.xaxis.set_minor_formatter(ticker.FixedFormatter(minors)) 50ax.text(0.0, 0.1, "FixedFormatter(['', '0', '1', ...])", 51 fontsize=15, transform=ax.transAxes) 52 53 54# FuncFormatter can be used as a decorator 55@ticker.FuncFormatter 56def major_formatter(x, pos): 57 return "[%.2f]" % x 58 59 60ax = fig.add_subplot(n, 1, 3) 61setup(ax) 62ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00)) 63ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25)) 64ax.xaxis.set_major_formatter(major_formatter) 65ax.text(0.0, 0.1, 'FuncFormatter(lambda x, pos: "[%.2f]" % x)', 66 fontsize=15, transform=ax.transAxes) 67 68 69# FormatStr formatter 70ax = fig.add_subplot(n, 1, 4) 71setup(ax) 72ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00)) 73ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25)) 74ax.xaxis.set_major_formatter(ticker.FormatStrFormatter(">%d<")) 75ax.text(0.0, 0.1, "FormatStrFormatter('>%d<')", 76 fontsize=15, transform=ax.transAxes) 77 78# Scalar formatter 79ax = fig.add_subplot(n, 1, 5) 80setup(ax) 81ax.xaxis.set_major_locator(ticker.AutoLocator()) 82ax.xaxis.set_minor_locator(ticker.AutoMinorLocator()) 83ax.xaxis.set_major_formatter(ticker.ScalarFormatter(useMathText=True)) 84ax.text(0.0, 0.1, "ScalarFormatter()", fontsize=15, transform=ax.transAxes) 85 86# StrMethod formatter 87ax = fig.add_subplot(n, 1, 6) 88setup(ax) 89ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00)) 90ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25)) 91ax.xaxis.set_major_formatter(ticker.StrMethodFormatter("{x}")) 92ax.text(0.0, 0.1, "StrMethodFormatter('{x}')", 93 fontsize=15, transform=ax.transAxes) 94 95# Percent formatter 96ax = fig.add_subplot(n, 1, 7) 97setup(ax) 98ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00)) 99ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25)) 100ax.xaxis.set_major_formatter(ticker.PercentFormatter(xmax=5)) 101ax.text(0.0, 0.1, "PercentFormatter(xmax=5)", 102 fontsize=15, transform=ax.transAxes) 103 104# Push the top of the top axes outside the figure because we only show the 105# bottom spine. 106fig.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=1.05) 107 108plt.show() 109