<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Tight Layout guide — Matplotlib v1.1.1 documentation</title> <link rel="stylesheet" href="../_static/mpl.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '1.1.1', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Matplotlib v1.1.1 documentation" href="../_static/opensearch.xml"/> <link rel="top" title="Matplotlib v1.1.1 documentation" href="../index.html" /> <link rel="up" title="User’s Guide" href="index.html" /> <link rel="next" title="Legend guide" href="legend_guide.html" /> <link rel="prev" title="Customizing Location of Subplot Using GridSpec" href="gridspec.html" /> </head> <body> <!-- Piwik --> <script type="text/javascript"> if ("matplotlib.sourceforge.net" == document.location.hostname || "matplotlib.sf.net" == document.location.hostname) { var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/matplotlib/" : "http://apps.sourceforge.net/piwik/matplotlib/"); document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); } </script> <script type="text/javascript"> if ("matplotlib.sourceforge.net" == document.location.hostname || "matplotlib.sf.net" == document.location.hostname) { piwik_action_name = ''; piwik_idsite = 1; piwik_url = pkBaseURL + "piwik.php"; piwik_log(piwik_action_name, piwik_idsite, piwik_url); document.write(unescape('%3Cobject%3E%3Cnoscript%3E%3Cp%3E%3Cimg src="http://apps.sourceforge.net/piwik/matplotlib/piwik.php?idsite=1" alt="piwik"/%3E%3C/p%3E%3C/noscript%3E%3C/object%3E')); } </script> <!-- End Piwik Tag --> <link rel="shortcut icon" href="_static/favicon.ico"> <div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px"> <a href="../index.html"><img src="../_static/logo2.png" border="0" alt="matplotlib"/></a> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="legend_guide.html" title="Legend guide" accesskey="N">next</a> |</li> <li class="right" > <a href="gridspec.html" title="Customizing Location of Subplot Using GridSpec" accesskey="P">previous</a> |</li> <li><a href="../index.html">home</a>| </li> <li><a href="../search.html">search</a>| </li> <li><a href="../examples/index.html">examples</a>| </li> <li><a href="../gallery.html">gallery</a>| </li> <li><a href="../contents.html">docs</a> »</li> <li><a href="index.html" accesskey="U">User’s Guide</a> »</li> </ul> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../contents.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">Tight Layout guide</a><ul> <li><a class="reference internal" href="#simple-example">Simple Example</a><ul> <li><a class="reference internal" href="#caveats">Caveats</a></li> <li><a class="reference internal" href="#use-with-gridspec">Use with GridSpec</a></li> <li><a class="reference internal" href="#use-with-axesgrid1">Use with AxesGrid1</a></li> <li><a class="reference internal" href="#colorbar">Colorbar</a></li> </ul> </li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="gridspec.html" title="previous chapter">Customizing Location of Subplot Using GridSpec</a></p> <h4>Next topic</h4> <p class="topless"><a href="legend_guide.html" title="next chapter">Legend guide</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/users/tight_layout_guide.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" size="18" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="tight-layout-guide"> <span id="plotting-guide-tight-layout"></span><h1>Tight Layout guide<a class="headerlink" href="#tight-layout-guide" title="Permalink to this headline">¶</a></h1> <p><em>tight_layout</em> automatically adjusts subplot params so that the subplot(s) fits in to the figure area. This is an experimental feature and may not work for some cases. It only checks the extents of ticklabels, axis labels, and titles.</p> <div class="section" id="simple-example"> <h2>Simple Example<a class="headerlink" href="#simple-example" title="Permalink to this headline">¶</a></h2> <p>In matplotlib location of axes (including subplots) are specified in normalized figure coordinate. It can happen that your axis labels or titles (or sometimes even ticklabels) go outside the figure area thus clipped.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s">'savefig.facecolor'</span><span class="p">]</span> <span class="o">=</span> <span class="s">"0.8"</span> <span class="k">def</span> <span class="nf">example_plot</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">12</span><span class="p">):</span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span> <span class="n">ax</span><span class="o">.</span><span class="n">locator_params</span><span class="p">(</span><span class="n">nbins</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'x-label'</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">fontsize</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'y-label'</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">fontsize</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s">'Title'</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="n">fontsize</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">24</span><span class="p">)</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-1.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-1.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-1.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-1.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-1.png" src="../_images/tight_layout_guide-1.png" /> </div> <p>To prevent this, the location of axes need to be adjusted. For subplots, this can be done by adjusting the subplot params (<a class="reference internal" href="../faq/howto_faq.html#howto-subplots-adjust"><em>Move the edge of an axes to make room for tick labels</em></a>). Matplotlib v1.1 introduces a new command <a class="reference internal" href="../api/pyplot_api.html#matplotlib.pyplot.tight_layout" title="matplotlib.pyplot.tight_layout"><tt class="xref py py-func docutils literal"><span class="pre">tight_layout()</span></tt></a> that does this automatically for you.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-2.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-2.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-2.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-2.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-2.png" src="../_images/tight_layout_guide-2.png" /> </div> <p>When you have multiple subplots, often you see labels of different axes overlaps each other.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span><span class="p">,</span> <span class="p">((</span><span class="n">ax1</span><span class="p">,</span> <span class="n">ax2</span><span class="p">),</span> <span class="p">(</span><span class="n">ax3</span><span class="p">,</span> <span class="n">ax4</span><span class="p">))</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">nrows</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">ncols</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax1</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax2</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax3</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax4</span><span class="p">)</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-3.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-3.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-3.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-3.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-3.png" src="../_images/tight_layout_guide-3.png" /> </div> <p><em>tight_layout</em> will also adjust spacing betweens subplots to minimize the overlaps.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-4.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-4.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-4.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-4.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-4.png" src="../_images/tight_layout_guide-4.png" /> </div> <p><a class="reference internal" href="../api/pyplot_api.html#matplotlib.pyplot.tight_layout" title="matplotlib.pyplot.tight_layout"><tt class="xref py py-func docutils literal"><span class="pre">tight_layout()</span></tt></a> can take keyword arguments of <em>pad</em>, <em>w_pad</em> and <em>h_pad</em>. These controls the extra pad around the figure border and between subplots. The pads are specified in fraction of fontsize.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">pad</span><span class="o">=</span><span class="mf">0.4</span><span class="p">,</span> <span class="n">w_pad</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">h_pad</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-5.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-5.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-5.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-5.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-5.png" src="../_images/tight_layout_guide-5.png" /> </div> <p><a class="reference internal" href="../api/pyplot_api.html#matplotlib.pyplot.tight_layout" title="matplotlib.pyplot.tight_layout"><tt class="xref py py-func docutils literal"><span class="pre">tight_layout()</span></tt></a> will work even if the sizes of subplot are different as far as their grid specification is compatible. In the example below, <em>ax1</em> and <em>ax2</em> are subplots of 2x2 grid, while <em>ax3</em> is of 1x2 grid.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">221</span><span class="p">)</span> <span class="n">ax2</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">223</span><span class="p">)</span> <span class="n">ax3</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">122</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax1</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax2</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax3</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-6.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-6.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-6.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-6.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-6.png" src="../_images/tight_layout_guide-6.png" /> </div> <p>It works with subplots created with <a class="reference internal" href="../api/pyplot_api.html#matplotlib.pyplot.subplot2grid" title="matplotlib.pyplot.subplot2grid"><tt class="xref py py-func docutils literal"><span class="pre">subplot2grid()</span></tt></a>. In general, subplots created from the gridspec (<a class="reference internal" href="gridspec.html#gridspec-guide"><em>Customizing Location of Subplot Using GridSpec</em></a>) will work.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot2grid</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="n">ax2</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot2grid</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">colspan</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="n">ax3</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot2grid</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">colspan</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">rowspan</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="n">ax4</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot2grid</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="n">rowspan</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax1</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax2</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax3</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax4</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-7.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-7.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-7.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-7.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-7.png" src="../_images/tight_layout_guide-7.png" /> </div> <p>Although not thoroughly tested, it seems to work for subplots with aspect != “auto” (e.g., axes with images).</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span><span class="mi">10</span><span class="p">))</span> <span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">))</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">)</span> <span class="n">im</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="s">"none"</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-8.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-8.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-8.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-8.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-8.png" src="../_images/tight_layout_guide-8.png" /> </div> <div class="section" id="caveats"> <h3>Caveats<a class="headerlink" href="#caveats" title="Permalink to this headline">¶</a></h3> <blockquote> <div><ul class="simple"> <li><em>tight_layout</em> only considers ticklabels, axis labels, and titles. Thus, other atists may be clipped and also may overlap.</li> <li>It assumes that the extra space needed for ticklabels, axis labels, and titles is independent of original location of axes. This is often True, but there are rare cases it is not.</li> <li>pad=0 clips some of the texts by a few pixels. This may be a bug or a limitation of the current algorithm and it is not clear why it happens. Meanwhile, use of pad at least larger than 0.3 is recommended.</li> </ul> </div></blockquote> </div> <div class="section" id="use-with-gridspec"> <h3>Use with GridSpec<a class="headerlink" href="#use-with-gridspec" title="Permalink to this headline">¶</a></h3> <p>GridSpec has its own tight_layout method (the pyplot api <a class="reference internal" href="../api/pyplot_api.html#matplotlib.pyplot.tight_layout" title="matplotlib.pyplot.tight_layout"><tt class="xref py py-func docutils literal"><span class="pre">tight_layout()</span></tt></a> also works).</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="kn">import</span> <span class="nn">matplotlib.gridspec</span> <span class="kn">as</span> <span class="nn">gridspec</span> <span class="n">gs1</span> <span class="o">=</span> <span class="n">gridspec</span><span class="o">.</span><span class="n">GridSpec</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">gs1</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">ax2</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">gs1</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax1</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax2</span><span class="p">)</span> <span class="n">gs1</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">fig</span><span class="p">)</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-9.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-9.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-9.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-9.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-9.png" src="../_images/tight_layout_guide-9.png" /> </div> <p>You may provide an optional <em>rect</em> parameter, which specify the bbox that the subplots will be fit in. The coordinate must be in normalized figure coordinate and the default is (0, 0, 1, 1).</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">gs1</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">rect</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-10.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-10.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-10.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-10.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-10.png" src="../_images/tight_layout_guide-10.png" /> </div> <p>For example, this can be used for a figure with multiple grid_spec’s.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">gs2</span> <span class="o">=</span> <span class="n">gridspec</span><span class="o">.</span><span class="n">GridSpec</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">ss</span> <span class="ow">in</span> <span class="n">gs2</span><span class="p">:</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s">""</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">""</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">"x-label"</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">12</span><span class="p">)</span> <span class="n">gs2</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">rect</span><span class="o">=</span><span class="p">[</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">h_pad</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-11.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-11.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-11.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-11.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-11.png" src="../_images/tight_layout_guide-11.png" /> </div> <p>We may try to match the top and bottom of two grids</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">top</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">gs1</span><span class="o">.</span><span class="n">top</span><span class="p">,</span> <span class="n">gs2</span><span class="o">.</span><span class="n">top</span><span class="p">)</span> <span class="n">bottom</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">gs1</span><span class="o">.</span><span class="n">bottom</span><span class="p">,</span> <span class="n">gs2</span><span class="o">.</span><span class="n">bottom</span><span class="p">)</span> <span class="n">gs1</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="n">top</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="n">bottom</span><span class="p">)</span> <span class="n">gs2</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="n">top</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="n">bottom</span><span class="p">)</span> </pre></div> </div> <p>While this should be mostly good enough, but adjusting top and bottom may requires adjustment in hspace also. To update hspace & vspace, we call tight_layout again with updated rect argument. Note the rect argument specifies area including the ticklabels etc. Thus we will increase the bottom (which is 0 in normal case) by the difference between the <em>bottom</em> from above and bottom of each gridspec. Same thing for top.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">top</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">gs1</span><span class="o">.</span><span class="n">top</span><span class="p">,</span> <span class="n">gs2</span><span class="o">.</span><span class="n">top</span><span class="p">)</span> <span class="n">bottom</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">gs1</span><span class="o">.</span><span class="n">bottom</span><span class="p">,</span> <span class="n">gs2</span><span class="o">.</span><span class="n">bottom</span><span class="p">)</span> <span class="n">gs1</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">rect</span><span class="o">=</span><span class="p">[</span><span class="bp">None</span><span class="p">,</span> <span class="mi">0</span> <span class="o">+</span> <span class="p">(</span><span class="n">bottom</span><span class="o">-</span><span class="n">gs1</span><span class="o">.</span><span class="n">bottom</span><span class="p">),</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="p">(</span><span class="n">gs1</span><span class="o">.</span><span class="n">top</span><span class="o">-</span><span class="n">top</span><span class="p">)])</span> <span class="n">gs2</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">rect</span><span class="o">=</span><span class="p">[</span><span class="mf">0.5</span><span class="p">,</span> <span class="mi">0</span> <span class="o">+</span> <span class="p">(</span><span class="n">bottom</span><span class="o">-</span><span class="n">gs2</span><span class="o">.</span><span class="n">bottom</span><span class="p">),</span> <span class="bp">None</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="p">(</span><span class="n">gs2</span><span class="o">.</span><span class="n">top</span><span class="o">-</span><span class="n">top</span><span class="p">)],</span> <span class="n">h_pad</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-12.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-12.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-12.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-12.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-12.png" src="../_images/tight_layout_guide-12.png" /> </div> </div> <div class="section" id="use-with-axesgrid1"> <h3>Use with AxesGrid1<a class="headerlink" href="#use-with-axesgrid1" title="Permalink to this headline">¶</a></h3> <p>While limited, axes_grid1 toolkit is also supported.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span> <span class="kn">from</span> <span class="nn">mpl_toolkits.axes_grid1</span> <span class="kn">import</span> <span class="n">Grid</span> <span class="n">grid</span> <span class="o">=</span> <span class="n">Grid</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">rect</span><span class="o">=</span><span class="mi">111</span><span class="p">,</span> <span class="n">nrows_ncols</span><span class="o">=</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span> <span class="n">axes_pad</span><span class="o">=</span><span class="mf">0.25</span><span class="p">,</span> <span class="n">label_mode</span><span class="o">=</span><span class="s">'L'</span><span class="p">,</span> <span class="p">)</span> <span class="k">for</span> <span class="n">ax</span> <span class="ow">in</span> <span class="n">grid</span><span class="p">:</span> <span class="n">example_plot</span><span class="p">(</span><span class="n">ax</span><span class="p">)</span> <span class="n">ax</span><span class="o">.</span><span class="n">title</span><span class="o">.</span><span class="n">set_visible</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-13.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-13.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-13.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-13.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-13.png" src="../_images/tight_layout_guide-13.png" /> </div> </div> <div class="section" id="colorbar"> <h3>Colorbar<a class="headerlink" href="#colorbar" title="Permalink to this headline">¶</a></h3> <p>If you create colorbar with <a class="reference internal" href="../api/pyplot_api.html#matplotlib.pyplot.colorbar" title="matplotlib.pyplot.colorbar"><tt class="xref py py-func docutils literal"><span class="pre">colorbar()</span></tt></a> command, the created colorbar is an instance of Axes not Subplot, thus tight_layout does not work. With Matplotlib v1.1, you may create a colobar as a subplot using the gridspec.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span> <span class="n">im</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="s">"none"</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">im</span><span class="p">,</span> <span class="n">use_gridspec</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-14.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-14.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-14.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-14.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-14.png" src="../_images/tight_layout_guide-14.png" /> </div> <p>Another option is to use AxesGrid1 toolkit to explicitly create an axes for colorbar.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s">'all'</span><span class="p">)</span> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span> <span class="n">im</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="s">"none"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">mpl_toolkits.axes_grid1</span> <span class="kn">import</span> <span class="n">make_axes_locatable</span> <span class="n">divider</span> <span class="o">=</span> <span class="n">make_axes_locatable</span><span class="p">(</span><span class="n">plt</span><span class="o">.</span><span class="n">gca</span><span class="p">())</span> <span class="n">cax</span> <span class="o">=</span> <span class="n">divider</span><span class="o">.</span><span class="n">append_axes</span><span class="p">(</span><span class="s">"right"</span><span class="p">,</span> <span class="s">"5%"</span><span class="p">,</span> <span class="n">pad</span><span class="o">=</span><span class="s">"3%"</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">im</span><span class="p">,</span> <span class="n">cax</span><span class="o">=</span><span class="n">cax</span><span class="p">)</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span> </pre></div> </div> <p>(<a class="reference external" href="../users/tight_layout_guide-15.py">Source code</a>, <a class="reference external" href="../users/tight_layout_guide-15.png">png</a>, <a class="reference external" href="../users/tight_layout_guide-15.hires.png">hires.png</a>, <a class="reference external" href="../users/tight_layout_guide-15.pdf">pdf</a>)</p> <div class="figure"> <img alt="../_images/tight_layout_guide-15.png" src="../_images/tight_layout_guide-15.png" /> </div> </div> </div> </div> </div> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="legend_guide.html" title="Legend guide" >next</a> |</li> <li class="right" > <a href="gridspec.html" title="Customizing Location of Subplot Using GridSpec" >previous</a> |</li> <li><a href="../index.html">home</a>| </li> <li><a href="../search.html">search</a>| </li> <li><a href="../examples/index.html">examples</a>| </li> <li><a href="../gallery.html">gallery</a>| </li> <li><a href="../contents.html">docs</a> »</li> <li><a href="index.html" >User’s Guide</a> »</li> </ul> </div> <div class="footer"> © Copyright 2008, John Hunter, Darren Dale, Michael Droettboom. Last updated on Oct 04, 2012. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7. </div> </body> </html>