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

Skip to content

Commit 02b42db

Browse files
authored
Emit xlim_changed / ylim_changed when limits expand via set_xticks / set_yticks (#31251)
* Emit xlim/ylim_changed when limits expand via set_xticks/set_yticks * error fix * changes done * polar error fix * changes fixed * set axis name to avoid polar issue * initial commit * stopping reapplying limits * error fixing * back to basic * set auto as none * pushing previous implementation * rerun CI * remove none fallback * use get_view_interval() * add guard * push commit * callback * callback corrected * test file update * test file updated * re run ci * tuple added * revert changes * trigger ci
1 parent 40730d1 commit 02b42db

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

lib/matplotlib/axis.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2202,9 +2202,16 @@ def _set_tick_locations(self, ticks, *, minor=False):
22022202
ticks = self.convert_units(ticks)
22032203
locator = mticker.FixedLocator(ticks) # validate ticks early.
22042204
if len(ticks):
2205+
old_vmin, old_vmax = self.get_view_interval()
22052206
for axis in self._get_shared_axis():
22062207
# set_view_interval maintains any preexisting inversion.
22072208
axis.set_view_interval(min(ticks), max(ticks))
2209+
new_vmin, new_vmax = self.get_view_interval()
2210+
if old_vmin != new_vmin or old_vmax != new_vmax:
2211+
self.axes.callbacks.process(
2212+
f"{self._get_axis_name()}lim_changed",
2213+
self.axes,
2214+
)
22082215
self.axes.stale = True
22092216
if minor:
22102217
self.set_minor_locator(locator)

lib/matplotlib/tests/test_axis.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,20 @@ def test_grid_rcparams():
111111
assert ax.xaxis.get_minor_ticks()[0].gridline.get_linestyle() == def_linestyle
112112
assert ax.xaxis.get_major_ticks()[0].gridline.get_alpha() == def_alpha
113113
assert ax.xaxis.get_minor_ticks()[0].gridline.get_alpha() == 0.6
114+
115+
116+
def test_set_ticks_emits_lim_changed():
117+
fig, ax1 = plt.subplots()
118+
ax1.set_xlim(0.5, 1)
119+
called_cartesian = []
120+
ax1.callbacks.connect("xlim_changed", called_cartesian.append)
121+
ax1.set_xticks([0, 100])
122+
assert called_cartesian
123+
124+
fig = plt.figure()
125+
ax2 = fig.add_subplot(projection="polar")
126+
ax2.set_ylim(0.5, 1)
127+
called_polar = []
128+
ax2.callbacks.connect("ylim_changed", called_polar.append)
129+
ax2.set_rticks([1, 2, 3])
130+
assert called_polar

0 commit comments

Comments
 (0)