Closed
Description
Bug report
Bug summary
It appears that when plt.axes() is called, if the parameters are identical to a previous call, that old axes is reused instead of creating a new one. I don't know if this is by design or not but it makes the behavior very unexpected.
Code for reproduction
%matplotlib notebook
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
from mpl_toolkits.axes_grid1 import inset_locator
fig = plt.figure()
ax = fig.add_subplot(111)
a1=plt.axes([0,0,1,1], facecolor='yellow')
pos1=inset_locator.InsetPosition(parent=ax,lbwh=[.5,.5,.04,.04])
a1.set_axes_locator(locator=pos1)
b1=Button(a1,'1')
a2=plt.axes([0,0,1,1], facecolor='yellow')
# the parameters above are identical to those of a1, resulting in this behaving
# as if one says a2=a1
pos2=inset_locator.InsetPosition(parent=ax,lbwh=[.6,.5,.04,.04])
a2.set_axes_locator(locator=pos2)
b2=Button(a2,'2')
a3=plt.axes([0,0,1,1], facecolor='orange')
# the parameters above are different from previous axes() calls and therefore a new
# axes is created
pos3=inset_locator.InsetPosition(parent=ax,lbwh=[.7,.5,.04,.04])
a3.set_axes_locator(locator=pos3)
b3=Button(a3,'3')
# The use of buttons is to illustrate a use case. But it is not necessary; the behavior is the
# same if one comments out the three Button() calls
plt.show()
Actual outcome
Two buttons appear, one with "1" and "2" on top of each other and the other with "3" in it.
Expected outcome
Three buttons appear: "1", "2", and "3" horizontally.
Matplotlib version
- Operating System: Window 7
- Matplotlib Version: 2.0.2
- Python Version: 3.6.1 (Anaconda 4.4.0)
- Jupyter Version: 5.0.0 (IPython 5.3.0)
- Other Libraries: No