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

Skip to content

Commit e3fb850

Browse files
committed
ENH : add stale flag to Axis, XAxis, YAxis
1 parent a9faf4b commit e3fb850

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

lib/matplotlib/axis.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,7 @@ def set_label_coords(self, x, y, transform=None):
679679

680680
self.label.set_transform(transform)
681681
self.label.set_position((x, y))
682+
self.stale = True
682683

683684
def get_transform(self):
684685
return self._scale.get_transform()
@@ -743,6 +744,7 @@ def cla(self):
743744
self.converter = None
744745
self.units = None
745746
self.set_units(None)
747+
self.stale = True
746748

747749
def reset_ticks(self):
748750
# build a few default ticks; grow as necessary later; only
@@ -782,6 +784,7 @@ def set_tick_params(self, which='major', reset=False, **kw):
782784
if which == 'minor' or which == 'both':
783785
for tick in self.minorTicks:
784786
tick._apply_params(**self._minor_tick_kw)
787+
self.stale = True
785788

786789
@staticmethod
787790
def _translate_tick_kw(kw, to_init_kw=True):
@@ -846,6 +849,7 @@ def set_clip_path(self, clippath, transform=None):
846849
artist.Artist.set_clip_path(self, clippath, transform)
847850
for child in self.majorTicks + self.minorTicks:
848851
child.set_clip_path(clippath, transform)
852+
self.stale = True
849853

850854
def get_view_interval(self):
851855
'return the Interval instance for this axis view limits'
@@ -928,6 +932,7 @@ def get_ticklabel_extents(self, renderer):
928932
def set_smart_bounds(self, value):
929933
"""set the axis to have smart bounds"""
930934
self._smart_bounds = value
935+
self.stale = True
931936

932937
def get_smart_bounds(self):
933938
"""get whether the axis has smart bounds"""
@@ -1125,6 +1130,7 @@ def draw(self, renderer, *args, **kwargs):
11251130
mpatches.bbox_artist(self.label, renderer)
11261131

11271132
renderer.close_group(__name__)
1133+
self.stale = False
11281134

11291135
def _get_label(self):
11301136
raise NotImplementedError('Derived must override')
@@ -1365,6 +1371,7 @@ def grid(self, b=None, which='major', **kwargs):
13651371
if len(kwargs):
13661372
tick.gridline.update(kwargs)
13671373
self._major_tick_kw['gridOn'] = self._gridOnMajor
1374+
self.stale = True
13681375

13691376
def update_units(self, data):
13701377
"""
@@ -1385,6 +1392,7 @@ def update_units(self, data):
13851392

13861393
if neednew:
13871394
self._update_axisinfo()
1395+
self.stale = True
13881396
return True
13891397

13901398
def _update_axisinfo(self):
@@ -1452,6 +1460,7 @@ def set_units(self, u):
14521460
self._update_axisinfo()
14531461
self.callbacks.process('units')
14541462
self.callbacks.process('units finalize')
1463+
self.stale = True
14551464

14561465
def get_units(self):
14571466
'return the units for axis'
@@ -1467,6 +1476,7 @@ def set_label_text(self, label, fontdict=None, **kwargs):
14671476
if fontdict is not None:
14681477
self.label.update(fontdict)
14691478
self.label.update(kwargs)
1479+
self.stale = True
14701480
return self.label
14711481

14721482
def set_major_formatter(self, formatter):
@@ -1478,6 +1488,7 @@ def set_major_formatter(self, formatter):
14781488
self.isDefault_majfmt = False
14791489
self.major.formatter = formatter
14801490
formatter.set_axis(self)
1491+
self.stale = True
14811492

14821493
def set_minor_formatter(self, formatter):
14831494
"""
@@ -1488,6 +1499,7 @@ def set_minor_formatter(self, formatter):
14881499
self.isDefault_minfmt = False
14891500
self.minor.formatter = formatter
14901501
formatter.set_axis(self)
1502+
self.stale = True
14911503

14921504
def set_major_locator(self, locator):
14931505
"""
@@ -1498,6 +1510,7 @@ def set_major_locator(self, locator):
14981510
self.isDefault_majloc = False
14991511
self.major.locator = locator
15001512
locator.set_axis(self)
1513+
self.stale = True
15011514

15021515
def set_minor_locator(self, locator):
15031516
"""
@@ -1508,6 +1521,7 @@ def set_minor_locator(self, locator):
15081521
self.isDefault_minloc = False
15091522
self.minor.locator = locator
15101523
locator.set_axis(self)
1524+
self.stale = True
15111525

15121526
def set_pickradius(self, pickradius):
15131527
"""
@@ -1567,6 +1581,7 @@ def set_ticklabels(self, ticklabels, *args, **kwargs):
15671581
if tick.label2On:
15681582
ret.append(tick.label2)
15691583

1584+
self.stale = True
15701585
return ret
15711586

15721587
def set_ticks(self, ticks, minor=False):
@@ -1747,6 +1762,7 @@ def set_label_position(self, position):
17471762
msg = "Position accepts only [ 'top' | 'bottom' ]"
17481763
raise ValueError(msg)
17491764
self.label_position = position
1765+
self.stale = True
17501766

17511767
def _update_label_position(self, bboxes, bboxes2):
17521768
"""
@@ -1851,6 +1867,7 @@ def set_ticks_position(self, position):
18511867
bottom=True, labelbottom=True)
18521868
else:
18531869
raise ValueError("invalid position: %s" % position)
1870+
self.stale = True
18541871

18551872
def tick_top(self):
18561873
'use ticks only on top'
@@ -1929,6 +1946,7 @@ def set_data_interval(self, vmin, vmax, ignore=False):
19291946
else:
19301947
Vmin, Vmax = self.get_data_interval()
19311948
self.axes.dataLim.intervalx = min(vmin, Vmin), max(vmax, Vmax)
1949+
self.stale = True
19321950

19331951
def set_default_intervals(self):
19341952
'set the default limits for the axis interval if they are not mutated'
@@ -1946,6 +1964,7 @@ def set_default_intervals(self):
19461964
self.axes.dataLim.intervalx = xmin, xmax
19471965
if not viewMutated:
19481966
self.axes.viewLim.intervalx = xmin, xmax
1967+
self.stale = True
19491968

19501969

19511970
class YAxis(Axis):
@@ -2065,6 +2084,7 @@ def set_label_position(self, position):
20652084
msg = "Position accepts only [ 'left' | 'right' ]"
20662085
raise ValueError(msg)
20672086
self.label_position = position
2087+
self.stale = True
20682088

20692089
def _update_label_position(self, bboxes, bboxes2):
20702090
"""
@@ -2127,6 +2147,7 @@ def set_offset_position(self, position):
21272147

21282148
self.offsetText.set_ha(position)
21292149
self.offsetText.set_position((x, y))
2150+
self.stale = True
21302151

21312152
def get_text_widths(self, renderer):
21322153
bbox, bbox2 = self.get_ticklabel_extents(renderer)
@@ -2176,6 +2197,7 @@ def set_ticks_position(self, position):
21762197
left=True, labelleft=True)
21772198
else:
21782199
raise ValueError("invalid position: %s" % position)
2200+
self.stale = True
21792201

21802202
def tick_right(self):
21812203
'use ticks only on right'
@@ -2239,6 +2261,7 @@ def set_view_interval(self, vmin, vmax, ignore=False):
22392261
else:
22402262
self.axes.viewLim.intervaly = (max(vmin, vmax, Vmin),
22412263
min(vmin, vmax, Vmax))
2264+
self.stale = True
22422265

22432266
def get_minpos(self):
22442267
return self.axes.dataLim.minposy
@@ -2254,6 +2277,7 @@ def set_data_interval(self, vmin, vmax, ignore=False):
22542277
else:
22552278
Vmin, Vmax = self.get_data_interval()
22562279
self.axes.dataLim.intervaly = min(vmin, Vmin), max(vmax, Vmax)
2280+
self.stale = True
22572281

22582282
def set_default_intervals(self):
22592283
'set the default limits for the axis interval if they are not mutated'
@@ -2271,3 +2295,4 @@ def set_default_intervals(self):
22712295
self.axes.dataLim.intervaly = ymin, ymax
22722296
if not viewMutated:
22732297
self.axes.viewLim.intervaly = ymin, ymax
2298+
self.stale = True

0 commit comments

Comments
 (0)