question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

plotting: subplots_adjust prevents use of constrained_layout=True

See original GitHub issue

Code 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:closed
  • Created 5 years ago
  • Reactions:2
  • Comments:14 (14 by maintainers)

github_iconTop GitHub Comments

2reactions
michaelayecommented, Jul 16, 2019

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.

1reaction
michaelayecommented, Feb 10, 2020

Here is an easy to reproduce minimal example:

tseries = pd.date_range('now', freq='s', periods=100)
df = pd.DataFrame({'data': np.random.random(100)}, index=tseries)
df.plot()

Output:

Screenshot 2020-02-10 09 55 00

(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?

Read more comments on GitHub >

github_iconTop Results From Across the Web

Constrained Layout Guide — Matplotlib 3.6.2 documentation
How to use constrained-layout to fit plots within your figure cleanly. ... To prevent this, the location of axes needs to be adjusted....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found