我经常想做一个计数的柱状图。如果计数很低,我通常会得到非整数的主要和/或次要刻度位置。我怎样才能防止这种情况?在计算数据时,在1.5处打勾是没有意义的。
这是我第一次尝试:
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))
当计数很小的时候,它可以工作,但是当计数很大的时候,我会得到很多小信号:
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))
如何从第一个例子中获得期望的行为,同时避免在第二个例子中发生什么?
我想我可以忽略那些小滴答声。我将尝试一下,看看它在所有用例中是否都成立:
您可以使用
MaxNLocator
方法,如下所示:以及
在我的代码中起作用。 只要使用
align
可选参数,xticks
就有了魔力。相关问题 更多 >
编程相关推荐