是否有避免在对数尺度上重叠的刻度格式器?

0 投票
1 回答
32 浏览
提问于 2025-04-12 13:44

有没有办法让刻度自动不重叠呢?我运行了下面的代码,你可以看到刻度太多了,重叠在一起,看不清楚。

import matplotlib.pyplot as plt
from matplotlib.ticker import NullFormatter, EngFormatter
import numpy as np

fig = plt.figure(num='design', clear=True)
ax = fig.subplots()

v = np.logspace(np.log10(80), np.log10(7e3), 2)
ax.semilogx(v, np.ones_like(v), color=(0,0,0,0))
ax.grid(which='both', axis='x')
ax.yaxis.set_major_formatter(NullFormatter())
ax.xaxis.set_major_formatter(EngFormatter(unit='V'))
ax.xaxis.set_minor_formatter(EngFormatter(unit='V'))
ax.set_xlabel('voltage')

结果:

这里输入图片描述

1 个回答

1

如果你不需要每一个小刻度的话,可以把设置小刻度单位的那行代码注释掉(就是 set_minor_formatter 那个),因为正是这行代码让小刻度显示出来。如果没有数据的话,看起来会很糟糕,但如果你确实有数据并且这些数据跨越了很大的范围(这时候就需要用对数刻度),那么看起来就会正常多了。

如果你需要更多的刻度,可以使用刻度定位器来设置你想要的刻度频率(关于这个在Stack Overflow上有很多相关的问题)。

撰写回答