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

Skip to content

Commit b8a5f91

Browse files
committed
Merge pull request matplotlib#3634 from tacaswell/cla_fix
BUG : fix cla behavior with twinx
2 parents 1fa0153 + b4563d8 commit b8a5f91

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

lib/matplotlib/axes/_base.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,16 @@ def _gen_axes_spines(self, locations=None, offset=0.0, units='inches'):
817817
def cla(self):
818818
"""Clear the current axes."""
819819
# Note: this is called by Axes.__init__()
820+
821+
# stash the current visibility state
822+
if hasattr(self, 'patch'):
823+
patch_visible = self.patch.get_visible()
824+
else:
825+
patch_visible = True
826+
827+
xaxis_visible = self.xaxis.get_visible()
828+
yaxis_visible = self.yaxis.get_visible()
829+
820830
self.xaxis.cla()
821831
self.yaxis.cla()
822832
for name, spine in six.iteritems(self.spines):
@@ -942,6 +952,13 @@ def cla(self):
942952

943953
self._shared_x_axes.clean()
944954
self._shared_y_axes.clean()
955+
if self._sharex:
956+
self.xaxis.set_visible(xaxis_visible)
957+
self.patch.set_visible(patch_visible)
958+
959+
if self._sharey:
960+
self.yaxis.set_visible(yaxis_visible)
961+
self.patch.set_visible(patch_visible)
945962

946963
def clear(self):
947964
"""clear the axes"""

lib/matplotlib/tests/test_axes.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import six
55
from six.moves import xrange
66

7-
from nose.tools import assert_equal, assert_raises
7+
from nose.tools import assert_equal, assert_raises, assert_false, assert_true
88
import datetime
99

1010
import numpy as np
@@ -100,6 +100,30 @@ def test_twin_axis_locaters_formatters():
100100
ax3 = ax1.twinx()
101101

102102

103+
@cleanup
104+
def test_twinx_cla():
105+
fig, ax = plt.subplots()
106+
ax2 = ax.twinx()
107+
ax3 = ax2.twiny()
108+
plt.draw()
109+
assert_false(ax2.xaxis.get_visible())
110+
assert_false(ax2.patch.get_visible())
111+
ax2.cla()
112+
ax3.cla()
113+
114+
assert_false(ax2.xaxis.get_visible())
115+
assert_false(ax2.patch.get_visible())
116+
assert_true(ax2.yaxis.get_visible())
117+
118+
assert_true(ax3.xaxis.get_visible())
119+
assert_false(ax3.patch.get_visible())
120+
assert_false(ax3.yaxis.get_visible())
121+
122+
assert_true(ax.xaxis.get_visible())
123+
assert_true(ax.patch.get_visible())
124+
assert_true(ax.yaxis.get_visible())
125+
126+
103127
@image_comparison(baseline_images=["autoscale_tiny_range"], remove_text=True)
104128
def test_autoscale_tiny_range():
105129
# github pull #904

0 commit comments

Comments
 (0)