【发布时间】:2021-04-14 13:53:17
【问题描述】:
我正在尝试使用matplotlib Python 包在 y 轴上呈现指定的刻度。出于某种原因,该库渲染的刻度比我给它渲染和使用科学记数法的刻度要多。对我来说,这似乎是库中的一个错误,我能够在更多设备上重现该问题。有解决办法吗?
重现问题的源代码:
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
plt.figure(figsize=(6,4))
plt.xlim(0, 1000)
plt.xlabel('x')
plt.yscale('log')
plt.ylim(20, 200)
plt.yticks([20, 28, 39, 54, 75, 110, 150, 200])
plt.gca().get_yaxis().set_major_formatter(mticker.ScalarFormatter(useOffset=False))
plt.gca().get_yaxis().set_tick_params(which='minor', width=0)
plt.ylabel('y')
plt.savefig('test.png')
plt.close()
渲染图:
编辑
在plt.yscale('log') 之后调用plt.gca().get_yaxis().clear() 似乎可以解决问题。
【问题讨论】:
-
它们是小蜱虫。使用
plt.minorticks_off() -
您是否尝试关闭次要刻度?
set_minor_formatter(mticker.NullFormatter()) -
它们不是小刻度,而是
plt.yscale('log')调用之后的原始轴,在更改格式化程序之前。清除它解决了这个问题。
标签: python python-3.x matplotlib