使用嵌套在其他脚本中的复杂脚本pandas.DataFrame.plot()
and GridSpec
在子图设置中,我遇到以下问题:
当我创建 2 列 1 行网格规范时,刻度标签都是正确的。然而,当我创建 1 列 2 行 gridspec 时,一旦我使用以下命令绘制到第一个(上行)轴上pandas.DataFrame.plot()
,顶行的 x 刻度标签消失(刻度保留)。
一旦我在下轴上画了一些东西,顶部的刻度就不会改变,sharex
似乎不是问题。
但是,我的 x 标签仍然被存储:
axes[0].get_xaxis().get_ticklabels()
Out[59]:
<a list of 9 Text major ticklabel objects>
只是它们没有显示出来。我怀疑是 NullFormatter,但事实也并非如此:
axes[0].get_xaxis().get_major_formatter()
Out[57]:
<matplotlib.ticker.ScalarFormatter at 0x7f7414330710>
当我这样做时,我在第一个轴的顶部同时得到刻度和标签
axes[0].get_xaxis().tick_top()
然而,当我回到tick_bottom()
,我只有底部有勾号,没有标签。
尽管有“正常”格式化程序,但什么会导致我存储的标签不显示?
这是一个简单的例子:
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)