Pandas 为什么matplotlib';改变我的Xticklabel是什么样的布局?

Pandas 为什么matplotlib';改变我的Xticklabel是什么样的布局?,pandas,matplotlib,Pandas,Matplotlib,下面是一个简单的工作示例: 将熊猫作为pd导入 将matplotlib.pyplot作为plt导入 ex2=pd.DataFrame.from_dict({'values':{'2019-05-16':-0.4539503789160822, '2019-05-17': 0.17824705254564818, '2019-05-18': -0.8145004682381226, '2019-05-19': -0.16068367742158898, '2019-05-20': -0.14703

下面是一个简单的工作示例:

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
ex2=pd.DataFrame.from_dict({'values':{'2019-05-16':-0.4539503789160822,
'2019-05-17': 0.17824705254564818,
'2019-05-18': -0.8145004682381226,
'2019-05-19': -0.16068367742158898,
'2019-05-20': -0.14703503546059876,
'2019-05-21': 0.4063766692521381,
'2019-05-22': -0.9572965166800591,
'2019-05-23': -0.7125760201598659,
'2019-05-24': 0.5195104837966258,
'2019-05-25': 0.5763244454664754,
'2019-05-26': 0.7512143968738716,
'2019-05-27': 0.9708304482205082,
'2019-05-28': 0.910905683484745,
'2019-05-29': -0.19652191338402258,
'2019-05-30': -0.7913575644422205,
'2019-05-31': 0.406385536323757,
'2019-06-01': -0.9636746362006964,
'2019-06-02': -0.6904113830684114,
'2019-06-03': -0.4015962383225227}})
以下代码按预期工作:

fig,ax=plt.子批次(figsize=(12,8))
ex2.绘图(ax=ax)

但是,只需简单地添加
tight_layout
命令,就可以以一种奇怪的方式破坏它:

fig,ax=plt.子批次(figsize=(12,8))
ex2.绘图(ax=ax)
图1紧_布局图()

这似乎是一个错误,但如果不是,我会很感激弄清楚到底发生了什么

我正在使用以下版本:

matplotlib version: 3.1.0
python version: 3.6.8
pandas version: 0.24.2
编辑

通过以下方式将索引更改为
datetime

ex2.index=pd.to_datetime(ex2.index)
然后重新运行上述两段代码(在本例中)会得到一致的结果

fig,ax=plt.子批次(figsize=(12,8))
ex2.绘图(ax=ax)
图1紧_布局图()

对于我来说,Windows 10上的代码始终运行良好。Matplotlib版本:3.1.0,Python 3.7.2 64位/3.7.3 32位。这是,可以追溯到。它将固定在0.25。但无论如何,我建议绘制实际日期,而不是字符串,除非你希望这些字符串像“苹果”、“香蕉”、“樱桃”等类别那样处理。不,这是同一个问题。从版本0.23到版本0.24,标签得到了修复,但这使得问题比以前更加明显(参见我对该线程的评论)。从0.24到0.25,标签的位置是固定的,但是0.25还没有发布。好的,让我解释一下:问题是字符串只是输入到
FixedFormatter
(这基本上只是告诉“第一个勾号标记为bla,第二个标记为BLUB”,等等);但没有使用特殊的股票代码。这意味着默认的股票代码(定位器)处于活动状态。此默认定位器根据几个因素决定记号位置,尤其是轴的大小。所以你有4个记号和4个标签,都很好。但是由于
紧凑的布局
,轴的大小会发生变化。现在,由于固定格式设置程序,您仍然有4个标签,但默认定位器会给您8个记号……其中只有前4个被标记,因为固定格式设置程序没有更多可用标签。对于我来说,代码在Windows 10上始终工作正常。Matplotlib版本:3.1.0,Python 3.7.2 64位/3.7.3 32位。这是,可以追溯到。它将固定在0.25。但无论如何,我建议绘制实际日期,而不是字符串,除非你希望这些字符串像“苹果”、“香蕉”、“樱桃”等类别那样处理。不,这是同一个问题。从版本0.23到版本0.24,标签得到了修复,但这使得问题比以前更加明显(参见我对该线程的评论)。从0.24到0.25,标签的位置是固定的,但是0.25还没有发布。好的,让我解释一下:问题是字符串只是输入到
FixedFormatter
(这基本上只是告诉“第一个勾号标记为bla,第二个标记为BLUB”,等等);但没有使用特殊的股票代码。这意味着默认的股票代码(定位器)处于活动状态。此默认定位器根据几个因素决定记号位置,尤其是轴的大小。所以你有4个记号和4个标签,都很好。但是由于
紧凑的布局
,轴的大小会发生变化。由于固定格式设置程序的原因,现在您仍然有4个标签,但默认定位器会为您提供8个标记……其中只有前4个标记,因为固定格式设置程序没有更多可用的标签。