Quite often I want to make a bar chart of counts. If the counts are low I often get major and/or minor tick locations that are not integers. How can I prevent this? It makes no sense to have a tick at 1.5 when the data are counts.
This is my first attempt:
import pylab pylab.figure() ax = pylab.subplot(2, 2, 1) pylab.bar(range(1,4), range(1,4), align='center') major_tick_locs = ax.yaxis.get_majorticklocs() if len(major_tick_locs) < 2 or major_tick_locs[1] - major_tick_locs[0] < 1: ax.yaxis.set_major_locator(pylab.MultipleLocator(1)) minor_tick_locs = ax.yaxis.get_minorticklocs() if len(minor_tick_locs) < 2 or minor_tick_locs[1] - minor_tick_locs[0] < 1: ax.yaxis.set_minor_locator(pylab.MultipleLocator(1))
which works OK when the counts are small but when they are large, I get many many minor ticks:
import pylab ax = pylab.subplot(2, 2, 2) pylab.bar(range(1,4), range(100,400,100), align='center') major_tick_locs = ax.yaxis.get_majorticklocs() if len(major_tick_locs) < 2 or major_tick_locs[1] - major_tick_locs[0] < 1: ax.yaxis.set_major_locator(pylab.MultipleLocator(1)) minor_tick_locs = ax.yaxis.get_minorticklocs() if len(minor_tick_locs) < 2 or minor_tick_locs[1] - minor_tick_locs[0] < 1: ax.yaxis.set_minor_locator(pylab.MultipleLocator(1))
How can I get the desired behaviour from the first example with small counts whilst avoiding what happens in the second?
Locator_params() function that lets us change the tightness and number of ticks in the plots. This is made for customizing the subplots in matplotlib, where we need the ticks packed a little tighter and limited. So, we can use this function to control the number of ticks on the plots.
MatPlotLib with Python Matplotlib automatically arrives at the minimum and maximum values of variables to be displayed along x, y (and z axis in case of 3D plot) axes of a plot. However, it is possible to set the limits explicitly by using set_xlim() and set_ylim() functions.
Matplotlib removes both labels and ticks by using xticks([]) and yticks([]) By using the method xticks() and yticks() you can disable the ticks and tick labels from both the x-axis and y-axis.
You can use the MaxNLocator
method, like so:
from pylab import MaxNLocator ya = axes.get_yaxis() ya.set_major_locator(MaxNLocator(integer=True))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With