我正在尝试编辑刻度标签,但即使在设置了刻度后,我仍然会获得科学记数法。这是一个MWE:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(9, 7))
fig.subplots_adjust(left=0.11, right=0.95, top=0.94)
ax.ticklabel_format(style='plain')
plt.plot([1,4],[3,6] )
ax.set_yscale('log')
ax.set_xscale('log')
ax.set_xticks([0.7,1,1.5,2,2.5,3,4,5])
ax.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
产生这个情节
正如您所看到的,ax.ticklabel_format(style='plain')
似乎不起作用,因为我不断使用科学记数法获得刻度标签,并且在使用ax.set_xticks
时,旧的刻度标签仍然存在。我看了一下this主题,似乎问题在于选择刻度线,如果我使用例如0.3而不是0.7作为它的第一个刻度,但是我需要在这里做一个情节具体范围和使用对数刻度。
有什么解决方法吗?
答案 0 :(得分:1)
实际上,您的代码正在执行您需要的操作,问题是来自次要标记的标签不受影响且与主要标记重叠
你可以简单地添加一行:
ax.get_xaxis().set_minor_formatter(matplotlib.ticker.NullFormatter())
完整代码:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(9, 7))
fig.subplots_adjust(left=0.11, right=0.95, top=0.94)
ax.ticklabel_format(style='plain')
plt.plot([1,4],[3,6] )
ax.set_yscale('log')
ax.set_xscale('log')
ax.set_xticks([0.7,1,1.5,2,2.5,3,4,5])
ax.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax.get_xaxis().set_minor_formatter(matplotlib.ticker.NullFormatter())