在绘图上标记刻度位置时,是否有关于如何放置刻度标记的标准解决方案?我查看了 Matplotlib 的 MaxNLocator (https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/ticker.py#L1212),但目前还不清楚所有不同选项的作用,或者其中哪些是必要的用于基本刻度放置。
有人可以为简单的刻度位置功能提供伪代码吗?
在绘图上标记刻度位置时,是否有关于如何放置刻度标记的标准解决方案?我查看了 Matplotlib 的 MaxNLocator (https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/ticker.py#L1212),但目前还不清楚所有不同选项的作用,或者其中哪些是必要的用于基本刻度放置。
有人可以为简单的刻度位置功能提供伪代码吗?
我认为在绘图上放置刻度的经验法则是使用 1、2、5 和 10 的倍数。根据我的经验,matplotlib
似乎要遵守这一点。如果您有理由偏离默认刻度,我认为设置它们的最简单方法是使用set_ticks()
特定轴的方法。相关文档在这里: http: //matplotlib.org/api/axis_api.html。
import numpy as np
import matplotlib.pyplot as plt
ax = plt.subplot() # create axes to plot into
foo = np.array([0, 4, 12, 13, 18, 22]) # awkwardly spaced data
bar = np.random.rand(6) # random bar heights
plt.bar(foo, bar) # bar chart
ax.xaxis.get_ticklocs() # check tick locations -- currently array([ 0., 5., 10., 15., 20., 25.])
ax.xaxis.set_ticks(foo) # set the ticks to be right at each bar
ax.xaxis.get_ticklocs() # array([ 0, 4, 12, 13, 18, 22])
plt.draw()
ax.xaxis.set_ticks([0, 10, 20]) # minimal set of ticks
ax.xaxis.get_ticklocs() # array([ 0, 10, 20])
plt.draw()
在我的示例中的三个选项中,我将在这种情况下保留默认行为;但肯定有时间我会覆盖默认值。例如,另一个经验法则是我们应该尽量减少绘图中非数据的墨水量(即标记和线条)。因此,如果默认刻度设置为[0, 1, 2, 3, 4, 5, 6]
,我可能会将其更改为[0, 2, 4, 6]
,因为绘图刻度的墨水较少而不会失去清晰度。
编辑:[0, 10, 20]
也可以使用定位器来完成打勾,如评论中所建议的那样。例子:
ax.xaxis.set_major_locator(plt.FixedLocator([0,10,20]))
ax.xaxis.set_major_locator(plt.MultipleLocator(base=10))
ax.xaxis.set_major_locator(plt.MaxNLocator(nbins=3))