【发布时间】:2013-05-30 07:39:40
【问题描述】:
我正在使用带有 matplotlib.pyplot 的对数图,其 x 轴仅在几个数量级上变化。仅标记了主要抽动,x 轴看起来非常稀疏且有点不清楚。我怎样才能同时标记轻微抽动?
【问题讨论】:
标签: python matplotlib
我正在使用带有 matplotlib.pyplot 的对数图,其 x 轴仅在几个数量级上变化。仅标记了主要抽动,x 轴看起来非常稀疏且有点不清楚。我怎样才能同时标记轻微抽动?
【问题讨论】:
标签: python matplotlib
您想在次要刻度标签上添加什么?如果你只是想让你的轴看起来更活泼一点,你可以
import numpy as np
from matplotlib.ticker import LogLocator, FormatStrFormatter
# display 5 minor ticks between each major tick
minorLocator = LogLocator(subs=np.linspace(2,10,6,endpoint=False))
# format the labels (if they're the x values)
majorFormatter = FormatStrFormatter('%5.4f')
# for no labels use default NullFormatter
ax.xaxis.set_minor_locator(minorLocator)
# or if you want to see some constrained floats
# this may make things busy!
ax.xaxis.set_minor_formatter(minorFormatter)
【讨论】:
MultipleLocator 是其参数的每个倍数的定位器,因此在这种情况下,刻度将是 0,5,10,15,20,25,...,即不是五个次要刻度在每个主要刻度之间。
subs 指定为参数 [1.0],这意味着次要刻度将仅显示 101 * 1、102 * 1、10**3 * 1 等在。 numticks 参数试图在轴上拟合与其参数一样多的刻度线(至少看起来是这样),在本例中为 5。这两个参数都阻止了所需的输出。您只需调用LogLocator(subs=np.linspace(2,10,6,endpoint=False)) 即可在每个主要标记之间获得五个次要标记。
我会这样做:
plt.xticks([1, 3, 10, 30, 100, 300], [1, 3, 10, 30, 100, 300])
您可能应该将它放在一个方便的函数中,该函数获取当前轴限制并生成适当的刻度序列和刻度标签。
matplotlib 中可能有一个“Ticker”对象,它会做这样的事情。不幸的是,日志图上的文档非常稀少。
【讨论】: