Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c757fe1

Browse files
authored
Merge pull request #21131 from beckja/polar-fix
Fix polar() regression on second call failure
2 parents 10f5b60 + 9ee9f3e commit c757fe1

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

lib/matplotlib/pyplot.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2206,14 +2206,12 @@ def polar(*args, **kwargs):
22062206
# If an axis already exists, check if it has a polar projection
22072207
if gcf().get_axes():
22082208
ax = gca()
2209-
if isinstance(ax, PolarAxes):
2210-
return ax
2211-
else:
2209+
if not isinstance(ax, PolarAxes):
22122210
_api.warn_external('Trying to create polar plot on an Axes '
22132211
'that does not have a polar projection.')
2214-
ax = axes(projection="polar")
2215-
ret = ax.plot(*args, **kwargs)
2216-
return ret
2212+
else:
2213+
ax = axes(projection="polar")
2214+
return ax.plot(*args, **kwargs)
22172215

22182216

22192217
# If rcParams['backend_fallback'] is true, and an interactive backend is

lib/matplotlib/tests/test_pyplot.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,3 +310,13 @@ def test_subplot_change_projection():
310310
assert ax_next.name == proj
311311
assert ax is not ax_next
312312
ax = ax_next
313+
314+
315+
def test_polar_second_call():
316+
# the first call creates the axes with polar projection
317+
ln1, = plt.polar(0., 1., 'ro')
318+
assert isinstance(ln1, mpl.lines.Line2D)
319+
# the second call should reuse the existing axes
320+
ln2, = plt.polar(1.57, .5, 'bo')
321+
assert isinstance(ln2, mpl.lines.Line2D)
322+
assert ln1.axes is ln2.axes

0 commit comments

Comments
 (0)