Matplotlib双对数坐标下最后两个数量级次要网格线缺失问题
问题原因
你遇到的最后两个数量级次要网格线缺失,是LogLocator的默认参数限制导致的:
- 你定义次要刻度定位器时,仅设置了
base和subs参数,未显式指定numticks,Matplotlib 3.4.3中该参数的默认值为9。 - 你的X轴覆盖了100(1Hz)到109(1GHz)共10个数量级,超过了默认
numticks的限制,Matplotlib会自动裁剪超出限制部分的次要刻度,最终表现为末尾的数量级没有次要网格线。
修复方案
只需要在定义次要刻度定位器时,将numticks设置为大于你坐标轴覆盖的数量级总数的值即可,修改对应代码行:
# 原代码 locmin = LogLocator(base=10.0,subs=(0.2,0.4,0.6,0.8)) # 修改后代码 locmin = LogLocator(base=10.0, subs=(0.2,0.4,0.6,0.8), numticks=20)
设置numticks=20足够覆盖你当前的坐标轴范围,修改后所有数量级的次要网格线都会正常渲染。
内容的提问来源于stack exchange,提问作者polwel
相关产品推荐
相关产品推荐

