<div dir="ltr">Sorry for the late response.  <div><br></div><div>The mailing list is now at <a href="mailto:matplotlib-users@python.org">matplotlib-users@python.org</a><div><br></div><div>In your second case the issue is that axes are drawn one at a time so in that case the left axes with the line is drawn, then then right axes is drawn which overlays the line.  If you do `ax22.set_zorder(-1)` that example will render correctly.  This is a limitation of the compositing draw scheme that we use with the Agg.</div><div><br></div><div>In the other two examples the issue is the check in <a href="https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/patches.py#L4532">https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/patches.py#L4532</a> which is called as part of the draw logic of the ConnectionPatch.  This checks that the starting point of the connection patch is with in the confines of the axes which it belongs to.   However, in your case 1 and 4 you have added the artist to the Axes in which the _end_ belongs so the starting point will never fall within they axes the artist belongs to, and hence will never draw.</div><div><br></div><div>The two things that need to be true for this to work as expected:</div><div><br></div><div> - the Axes which the correction patch is added to needs to have a higher zorder than the other axes (or be added later, the z-order sort is stable to falls back to the order in which the elements were added to break ties)</div><div> - the connection patch must start in the Axes it belongs to.</div><div><br></div><div>It would probably be better if `ConnectionPatch` was a child of the Figure instead of the Axes.</div><div><br></div><div>Tom</div><div><div><br></div><div><br><div class="gmail_quote"><div dir="ltr">On Thu, Aug 20, 2015 at 11:55 AM Oliver <<a href="mailto:oliver.willekens@gmail.com">oliver.willekens@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>It would seem the `axesA` keyword always has to be the "latest" axes. If not, the connector does not get added to the figure.<br><br>Minimal, complete and verifiable example:<br>######<br>from matplotlib.patches import ConnectionPatch<br>import matplotlib.pyplot as plt<br>import matplotlib as mpl<br>import platform<br><br>print(mpl.__version__)<br>print(platform.python_version())<br><br>xya = (.5,.5)<br>xyb = (.6,.7)<br><br># shows nothing<br>f1, (ax11, ax12) = plt.subplots(1,2, sharey=False)<br>con1 = ConnectionPatch(xyA=xya, xyB=xyb , coordsA='data', coordsB='data', axesA=ax12, axesB=ax11)<br>ax11.add_artist(con1)<br><br># shows clipped line<br>f2, (ax21, ax22) = plt.subplots(1,2, sharey=False)<br>con2 = ConnectionPatch(xyA=xyb, xyB=xya , coordsA='data', coordsB='data', axesA=ax21, axesB=ax22)<br>ax21.add_artist(con2)<br><br># shows desired result<br>f3, (ax31, ax32) = plt.subplots(1,2, sharey=False)<br>con3 = ConnectionPatch(xyA=xya, xyB=xyb , coordsA='data', coordsB='data', axesA=ax32, axesB=ax31)<br>ax32.add_artist(con3)<br><br># shows nothing<br>f4, (ax41, ax42) = plt.subplots(1,2, sharey=False)<br>con4 = ConnectionPatch(xyA=xyb, xyB=xya , coordsA='data', coordsB='data', axesA=ax41, axesB=ax42)<br>ax42.add_artist(con4)<br><br>plt.draw()<br>plt.show()<br><br>######<br></div><br></div>While reference to clipping is made in the user guide[1], the seemingly forced choice of `axesA` had me stumped for quite some time. While I understand that the choice of the axes to add the connector is important to avoid overlap (in other words, on which axes one should call the `add_artist` method), it seems unimportant whether xyA or xyB are referenced in ax1 or ax2.<br><br></div>To clarify: I was expecting example 4 above to show a similar line as example 3.<br><div><div><br><br>[1]: <a href="http://matplotlib.org/users/annotations_guide.html#using-connectorpatch" target="_blank">http://matplotlib.org/users/annotations_guide.html#using-connectorpatch</a><br><div><br><div><br><br></div></div></div></div></div>
------------------------------------------------------------------------------<br>
_______________________________________________<br>
Matplotlib-users mailing list<br>
<a href="mailto:Matplotlib-users@lists.sourceforge.net" target="_blank">Matplotlib-users@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/matplotlib-users" rel="noreferrer" target="_blank">https://lists.sourceforge.net/lists/listinfo/matplotlib-users</a><br>
</blockquote></div></div></div></div></div>