如何在 Matplotlib 中将轴刻度值乘以 10 的因数
Posted
技术标签:
【中文标题】如何在 Matplotlib 中将轴刻度值乘以 10 的因数【英文标题】:How to multiply axis tick values by factors of 10 in Matplotlib 【发布时间】:2021-06-12 06:04:47 【问题描述】:我想将我的 y 轴刻度相乘(如下所示),以便它们显示从 2500 到 20000 的值范围,而不是 0.25 到 2。
我该怎么做?
【问题讨论】:
看看在matplotlib中改变y偏移。 y 轴上方的 '1e7' 是偏移量。 您当前的 y 轴实际上是 0.25*1e7 到 2.00*1e7。你是说你想让它显示 2500*1e3 到 20000*1e3?plt.plot(x,y/1000)
@tdy 是的,这正是我想做的事情
这能回答你的问题吗? Set scientific notation with fixed exponent and significant digits for multiple subplots
【参考方案1】:
你可以使用这个order of magnitude formatter:
# https://***.com/a/42658124/13138364
import matplotlib.ticker
class OOMFormatter(matplotlib.ticker.ScalarFormatter):
def __init__(self, order=0, fformat='%1.1f', offset=True, mathText=True):
self.oom = order
self.fformat = fformat
matplotlib.ticker.ScalarFormatter.__init__(self,useOffset=offset,useMathText=mathText)
def _set_order_of_magnitude(self):
self.orderOfMagnitude = self.oom
def _set_format(self, vmin=None, vmax=None):
self.format = self.fformat
if self._useMathText:
self.format = r'$\mathdefault%s$' % self.format
将1e7
更改为1e3
的玩具示例:
x = np.arange(100)
y = np.random.rand(100) * 2e7
# plot with `ax` handle
fig, ax = plt.subplots()
ax.plot(x, y)
# format order of magnitude of `ax.yaxis`
order = 3
ax.yaxis.set_major_formatter(OOMFormatter(order, '%1.1f'))
之前/之后:
【讨论】:
以上是关于如何在 Matplotlib 中将轴刻度值乘以 10 的因数的主要内容,如果未能解决你的问题,请参考以下文章