Python Xaxis蜱虫标签已消失,但仍存储在子地块上

Python Xaxis蜱虫标签已消失,但仍存储在子地块上,python,pandas,matplotlib,Python,Pandas,Matplotlib,使用嵌套在子地块设置中的其他pandas.DataFrame.plot()和GridSpec中的复杂脚本,我遇到以下问题: 当我创建一个2列1行gridspec时,刻度标签都是正确的。但是,当我创建一个1列2行gridspec时,只要我使用pandas.DataFrame.plot()在第一个(上一行)轴上打印,顶行的x-tick标签就会消失(记号仍然存在) 当我在较低的斧头上画出某样东西时,顶部刻度不会改变,sharex似乎不是问题所在 但是,我的x标签仍然存储: axes[0].get_xa

使用嵌套在子地块设置中的其他
pandas.DataFrame.plot()
GridSpec
中的复杂脚本,我遇到以下问题:

当我创建一个2列1行gridspec时,刻度标签都是正确的。但是,当我创建一个1列2行gridspec时,只要我使用
pandas.DataFrame.plot()
在第一个(上一行)轴上打印,顶行的x-tick标签就会消失(记号仍然存在)

当我在较低的斧头上画出某样东西时,顶部刻度不会改变,
sharex
似乎不是问题所在

但是,我的x标签仍然存储:

axes[0].get_xaxis().get_ticklabels()
Out[59]: 
<a list of 9 Text major ticklabel objects>
然而,当我返回到
勾选底部()
,我只有底部的勾选,而不是标签

什么会导致我存储的标签在格式设置为“正常”的情况下不显示?

下面是一个简单的例子:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

from matplotlib import gridspec

df = pd.DataFrame(np.random.rand(100,2), columns=['A', 'B'])

figure = plt.figure()

GridSpec = gridspec.GridSpec(nrows=2, ncols=1)
[plt.subplot(gsSpec) for gsSpec in GridSpec]
axes = figure.axes
df.plot(secondary_y=['B'], ax=axes[0], sharex=False)

正是
secondary_y=['B']
导致xtick消失。我不知道为什么会这样

幸运的是,您可以使用
plt.setp(ax.getxticklabels(),visible=True)
()手动重新启用它们:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

from matplotlib import gridspec

df = pd.DataFrame(np.random.rand(100,2), columns=['A', 'B'])

figure = plt.figure()

GridSpec = gridspec.GridSpec(nrows=2, ncols=1)
axes = [plt.subplot(gsSpec) for gsSpec in GridSpec]
ax = axes[0]
df.plot(secondary_y=['B'], ax=ax, sharex=True)
plt.setp(ax.get_xticklabels(), visible=True)

您是否介意创建一个,以便更容易地查看和调试您的问题?是的,确实需要一个mcve,我无法复制这种行为(我已经尝试过了,效果很好)@JulienMarrec补充道,如果我删除
secondary\u y=['B',只是为了缩小问题的范围
它按预期工作……熊猫0.25.1和matplotlib 3.1.1不起作用,有什么想法吗?这个错误应该已经解决了。我发现它显然是与9158一起修复的。你找到解决办法了吗?
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

from matplotlib import gridspec

df = pd.DataFrame(np.random.rand(100,2), columns=['A', 'B'])

figure = plt.figure()

GridSpec = gridspec.GridSpec(nrows=2, ncols=1)
[plt.subplot(gsSpec) for gsSpec in GridSpec]
axes = figure.axes
df.plot(secondary_y=['B'], ax=axes[0], sharex=False)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

from matplotlib import gridspec

df = pd.DataFrame(np.random.rand(100,2), columns=['A', 'B'])

figure = plt.figure()

GridSpec = gridspec.GridSpec(nrows=2, ncols=1)
axes = [plt.subplot(gsSpec) for gsSpec in GridSpec]
ax = axes[0]
df.plot(secondary_y=['B'], ax=ax, sharex=True)
plt.setp(ax.get_xticklabels(), visible=True)