我有两个共享相同x轴的子图。我删除了上部子图的xticklabels,但偏移“1e7”仍然可见。我怎么能隐藏它?
以下是我使用的代码:
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
s1 = plt.subplot(2,1,1)
s1.plot(np.arange(0,1e8,1e7),np.arange(10))
s1.tick_params(axis="x", labelbottom=False)
s2 = plt.subplot(2,1,2, sharex=s1)
s2.plot(np.arange(0,1e8,1e7),np.arange(10))
我也尝试了s1.get_xaxis().get_major_formatter().set_useOffset(False)
,但它没有做任何事情,我也尝试了s1.get_xaxis().get_major_formatter().set_powerlimits((-9,9))
,但它也影响了较低的情节。
答案 0 :(得分:1)
另一种方法是使用plt.subplots
创建子图,并使用sharex=True
作为选项。这会自动关闭顶部子图中的所有ticklabels
和offset_text
。来自文档:
sharex:string或bool
如果为True,则X轴将在所有子图中共享。如果是真的和 你有多行,除了最后一行之外的所有行上都有x刻度标签 图表的可见设置为False
import matplotlib.pyplot as plt
import numpy as np
fig, (s1, s2) = plt.subplots(2, 1, sharex=True)
s1.plot(np.arange(0,1e8,1e7),np.arange(10))
s2.plot(np.arange(0,1e8,1e7),np.arange(10))
plt.show()
答案 1 :(得分:0)
我终于在https://github.com/matplotlib/matplotlib/issues/4445找到了答案。我需要在代码中添加以下行:
plt.setp(s1.get_xaxis().get_offset_text(), visible=False)