<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">As pointed out by Eric Firing (<a href="https://github.com/matplotlib/matplotlib/issues/9207">here</a>) you can also do:</p>

<pre style="border:thin solid gray; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px"><code>ax<span style="color: #333333">.</span>set_aspect(<span style="color: #6600EE; font-weight: bold">1.</span>)
ax<span style="color: #333333">.</span>apply_aspect()
pos <span style="color: #333333">=</span> ax<span style="color: #333333">.</span>get_position(original<span style="color: #333333">=</span><span style="color: #007020">False</span>)
</code></pre>



<p dir="auto">Cheers,   Jody</p>

<p dir="auto">On 20 Sep 2017, at 12:30, Jody Klymak wrote:</p>

<p dir="auto"></p></div>
<div style="white-space:normal"></div>
<blockquote style="border-left:2px solid #5855D5; color:#5855D5; margin:0 0 5px; padding-left:5px"><div id="A6B219A4-224F-49D9-A0BF-96F0E9AD6D9A">

<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 20 Sep 2017, at 11:32, Klymak Jody wrote:</p>

<p dir="auto"></p></div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #5855D5; color:#5855D5; margin:0 0 5px; padding-left:5px"><p dir="auto">Oops.  Just realized you can also just do<br>
<br>
Pos =ax._postion<br>
<br>
To get the current position.  Of course this could break because you are accessing a private variable.</p>
</blockquote></div>
<div style="white-space:normal">

<p dir="auto">oops again, no you can’t, you need to use the formula below.  The reason is that <code>apply_aspect</code> doesn’t get called until the axes is drawn, so the new <code>_position</code> isn’t set until then.  </p>

<p dir="auto">Sorry, I should have checked before I wrote….</p>

<p dir="auto">Cheers,   Jody</p>

<p dir="auto"></p></div>
<div style="white-space:normal"><blockquote style="border-left:2px solid #5855D5; color:#5855D5; margin:0 0 5px; padding-left:5px"><p dir="auto">Cheers.  Jody<br>
<br>
Sent from my iPhone<br>
</p>
<blockquote style="border-left:2px solid #5855D5; color:#00AFCC; margin:0 0 5px; padding-left:5px; border-left-color:#00AFCC"><p dir="auto">On Sep 20, 2017, at 11:07, Jody Klymak <jklymak@uvic.ca> wrote:<br>
<br>
Hi Nunzio,<br>
<br>
The issue is that you call ax.set_aspect(‘equal’), and that changes the axes box. However, ax.get_position returns the frozen position, i.e. the old position. I don’t see a method to return the new position (and I wonder why get_position behaves this way).<br>
<br>
As a work around, you can get the aspect-ratio changed position as:<br>
<br>
figW, figH = fig.get_size_inches()<br>
fig_aspect = figH / figW<br>
newpos = pp.shrunk_to_aspect(ax.get_aspect() * ax.get_data_ratio(), pp, fig_aspect).anchored(ax.get_anchor(), pp))<br>
which I appreciate is a bit of a pain….<br>
<br>
Cheers, Jody<br>
<br>
On 20 Sep 2017, at 7:06, Nunzio Losacco wrote:<br>
<br>
Hi all,<br>
<br>
what I’m trying to do here is having third plot with its base aligned with the others and with reduced height (the final aim is custom positioning a colorbar).<br>
As you can see I’m getting the wrong position. What am I missing?<br>
<br>
Thanks for any help<br>
<br>
NL<br>
<br>
# -*- coding: utf-8 -*-<br>
<br>
from __future__ import unicode_literals<br>
import numpy as np<br>
from scipy.interpolate import griddata<br>
import matplotlib<br>
import matplotlib.pyplot as plt<br>
from matplotlib.patches import Circle<br>
from matplotlib.pylab import cm<br>
import matplotlib.colors as colors<br>
from mpl_toolkits.axes_grid1 import make_axes_locatable, axes_size<br>
<br>
matplotlib.rcParams.update({'font.size': 8})<br>
<br>
fig = plt.figure()<br>
fig.set_size_inches(6.3,6.3)<br>
<br>
ax1 = plt.subplot(111)<br>
divider = make_axes_locatable(ax1)<br>
ax2 = divider.append_axes('right', size='100%', pad=0.3)<br>
<br>
axes = [ax1, ax2]<br>
ltypes = ['dashed', 'solid']<br>
<br>
xi = np.linspace(-18.125, 18.125, 11)<br>
yi = np.linspace(0, 28, 9)<br>
xv, yv = np.meshgrid(xi, yi)<br>
<br>
xcOdd = 0.2<br>
zcOdd = 0.725<br>
xcEven = 0.6<br>
zcEven = 0.725<br>
<br>
maskRadius = 0.15<br>
<br>
for i in range(2):<br>
ax = axes[i]<br>
ax.set_xlabel('distance [m]')<br>
if i == 0:<br>
ax.set_ylabel('depth [m]')<br>
if i == 1:<br>
ax.set_yticklabels([])<br>
ax.invert_yaxis()<br>
ax.tick_params(direction='in')<br>
ax.set_aspect('equal')<br>
odd = Circle((xcOdd, zcOdd), .15, linewidth=1.2, color='k', fill=False)<br>
even = Circle((xcEven, zcEven), .15, linewidth=1.2, linestyle=ltypes[i], color='k', fill=False)<br>
<br>
vmax = 15.<br>
vmin = 0.<br>
norm = matplotlib.colors.Normalize(vmin,vmax, clip=False)<br>
<br>
color_map = matplotlib.colors.ListedColormap(plt.cm.Greys(np.linspace(0.25, 1, 5)), "name")<br>
<br>
ax.add_patch(odd)<br>
ax.add_patch(even)<br>
<br>
pad = 0.03<br>
width = 0.03<br>
<br>
pos = ax2.get_position()<br>
<br>
ax3 = fig.add_axes([pos.xmax + pad, pos.ymin, width, 0.7*(pos.ymax-pos.ymin) ])<br>
<br>
plt.savefig('prova-vect-paper-test-2.eps', format='eps')<br>
<br>
_______________________________________________<br>
Matplotlib-users mailing list<br>
Matplotlib-users@python.org<br>
<a href="https://mail.python.org/mailman/listinfo/matplotlib-users">https://mail.python.org/mailman/listinfo/matplotlib-users</a><br>
<br>
_______________________________________________<br>
Matplotlib-users mailing list<br>
Matplotlib-users@python.org<br>
<a href="https://mail.python.org/mailman/listinfo/matplotlib-users">https://mail.python.org/mailman/listinfo/matplotlib-users</a></p>
</blockquote></blockquote><br><p dir="auto">_______________________________________________<br>
Matplotlib-users mailing list<br>
Matplotlib-users@python.org<br>
<a href="https://mail.python.org/mailman/listinfo/matplotlib-users">https://mail.python.org/mailman/listinfo/matplotlib-users</a></p>
</div>
<div style="white-space:normal">
</div>
</div></div></blockquote>
<div style="white-space:normal">
<blockquote style="border-left:2px solid #5855D5; color:#5855D5; margin:0 0 5px; padding-left:5px">
</blockquote></div>
<div style="white-space:normal">
</div>
</div>
</body>
</html>