plotting: subplots_adjust prevents use of constrained_layout=True
See original GitHub issueCode Sample, a copy-pastable example if possible
# Your code here
import matplotlib.pyplot as plt
import pandas as pd
fig, axes = plt.subplots(2, constrained_layout=True)
times = pd.date_range(start='now', periods=10)
pd.DataFrame({'a': np.arange(10)}, index=times).plot(style='x', ax=axes[0])
Problem description
Plotting time-series uses pandas-internally a subplots_adjust, but due to this I am unable to use the new matplotlib constrained_layout that would take care of these things automatically.
Expected Output
A good layout that respects my constrained_layout setting to plt.subplots()
Output of pd.show_versions()
[paste the output of pd.show_versions()
here below this line]
INSTALLED VERSIONS
commit: None python: 3.7.1.final.0 python-bits: 64 OS: Linux OS-release: 3.10.0-862.el7.x86_64 machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: en_US.UTF-8
pandas: 0.24.1 pytest: 4.2.0 pip: 19.0.2 setuptools: 40.7.3 Cython: 0.29.5 numpy: 1.16.1 scipy: 1.2.0 pyarrow: None xarray: 0.11.3 IPython: 7.1.1 sphinx: 1.8.4 patsy: 0.5.1 dateutil: 2.8.0 pytz: 2018.9 blosc: None bottleneck: None tables: 3.4.4 numexpr: 2.6.9 feather: None matplotlib: 3.0.2 openpyxl: None xlrd: 1.2.0 xlwt: 1.3.0 xlsxwriter: 1.1.3 lxml.etree: 4.3.1 bs4: None html5lib: None sqlalchemy: 1.2.17 pymysql: None psycopg2: 2.7.7 (dt dec pq3 ext lo64) jinja2: 2.10 s3fs: None fastparquet: None pandas_gbq: None pandas_datareader: None gcsfs: None
Issue Analytics
- State:
- Created 5 years ago
- Reactions:2
- Comments:14 (14 by maintainers)
The issue is, at the moment pandas uses
subplot_adjust
pandas is robbing the user of the opportunity of letting matplotlib take care of it, b/c matplotlib says, “oh, you adjust layout yourself, then i don’t help you laying it out”, and there’s just no way to avoid it; I find that too imposing by pandas.Here is an easy to reproduce minimal example:
Output:
(Also here, for your convenience: https://gist.github.com/0b3c5f2ba247194fe84d8f620278dc7c )
I’m puzzled by the advise to plot using MPL instead of using df.plot(), isn’t the functionality there to be used? It’s a huge timesaver. Unless you claim I’m the only user that has constrained_layout as default MPL layouter. Do you officially not support plotting with the constraint_layout=True?