8000 Deprecate some label-related attributes on ContourLabeler. · matplotlib/matplotlib@b6dba0e · GitHub
[go: up one dir, main page]

Skip to content

Commit b6dba0e

Browse files
committed
Deprecate some label-related attributes on ContourLabeler.
The deprecated attributes cannot be updated after the ContourLabeler has been set up (i.e. if the end user overwrites them it does not update the labels) *and* all have direct replacements available. We could consider later adding new getters/setters (`get/set_font_properties`) which would actually update the properties on the label texts. While at it, prefer using `manual` over the equivalent but longer `self.labelManual`; `_get_nth_label_width` doesn't need to explicitly set the text size as that info is also carried by the fontproperties object.
1 parent 28bd24b commit b6dba0e

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
``ContourLabeler`` attributes
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
The ``labelFontProps``, ``labelFontSizeList``, and ``labelTextsList``
4+
attributes of `.ContourLabeler` have been deprecated. Use the ``labelTexts``
5+
attribute and the font properties of the corresponding text objects instead.

lib/matplotlib/contour.py

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,7 @@ def clabel(self, levels=None, *,
201201
self.labelLevelList = levels
202202
self.labelIndiceList = indices
203203

204-
self.labelFontProps = font_manager.FontProperties()
205-
self.labelFontProps.set_size(fontsize)
206-
font_size_pts = self.labelFontProps.get_size_in_points()
207-
self.labelFontSizeList = [font_size_pts] * len(levels)
204+
self._label_font_props = font_manager.FontProperties(size=fontsize)
208205

209206
if colors is None:
210207
self.labelMappable = self
@@ -217,10 +214,10 @@ def clabel(self, levels=None, *,
217214

218215
self.labelXYs = []
219216

220-
if np.iterable(self.labelManual):
221-
for x, y in self.labelManual:
217+
if np.iterable(manual):
218+
for x, y in manual:
222219
self.add_label_near(x, y, inline, inline_spacing)
223-
elif self.labelManual:
220+
elif manual:
224221
print('Select label locations manually using first mouse button.')
225222
print('End manual selection with second mouse button.')
226223
if not inline:
@@ -233,8 +230,23 @@ def clabel(self, levels=None, *,
233230
else:
234231
self.labels(inline, inline_spacing)
235232

236-
self.labelTextsList = cbook.silent_list('text.Text', self.labelTexts)
237-
return self.labelTextsList
233+
return cbook.silent_list('text.Text', self.labelTexts)
234+
235+
@_api.deprecated("3.7", alternative="cs.labelTexts[0].get_font()")
236+
@property
237+
def labelFontProps(self):
238+
return self._label_font_props
239+
240+
@_api.deprecated("3.7", alternative=(
241+
"[cs.labelTexts[0].get_font().get_size()] * len(cs.labelLevelList)"))
242+
@property
243+
def labelFontSizeList(self):
244+
return [self._label_font_props.get_size()] * len(self.labelLevelList)
245+
246+
@_api.deprecated("3.7", alternative="cs.labelTexts")
247+
@property
248+
def labelTextsList(self):
249+
return cbook.silent_list('text.Text', self.labelTexts)
238250

239251
def print_label(self, linecontour, labelwidth):
240252
"""Return whether a contour is long enough to hold a label."""
@@ -251,12 +263,10 @@ def _get_nth_label_width(self, nth):
251263
"""Return the width of the *nth* label, in pixels."""
252< 8000 code>264
fig = self.axes.figure
253265
renderer = fig._get_renderer()
254-
return (
255-
Text(0, 0, self.get_text(self.labelLevelList[nth], self.labelFmt),
256-
figure=fig,
257-
size=self.labelFontSizeList[nth],
258-
fontproperties=self.labelFontProps)
259-
.get_window_extent(renderer).width)
266+
return (Text(0, 0,
267+
self.get_text(self.labelLevelList[nth], self.labelFmt),
268+
figure=fig, fontproperties=self._label_font_props)
269+
.get_window_extent(renderer).width)
260270

261271
@_api.deprecated("3.5")
262272
def get_label_width(self, lev, fmt, fsize):
@@ -266,7 +276,7 @@ def get_label_width(self, lev, fmt, fsize):
266276
fig = self.axes.figure
267277
renderer = fig._get_renderer()
268278
width = (Text(0, 0, lev, figure=fig,
269-
size=fsize, fontproperties=self.labelFontProps)
279+
size=fsize, fontproperties=self._label_font_props)
270280
.get_window_extent(renderer).width)
271281
width *= 72 / fig.dpi
272282
return width
@@ -276,7 +286,7 @@ def set_label_props(self, label, text, color):
276286
"""Set the label properties - color, fontsize, text."""
277287
label.set_text(text)
278288
label.set_color(color)
279-
label.set_fontproperties(self.labelFontProps)
289+
label.set_fontproperties(self._label_font_props)
280290
label.set_clip_box(self.axes.bbox)
281291

282292
def get_text(self, lev, fmt):
@@ -426,7 +436,7 @@ def add_label(self, x, y, rotation, lev, cvalue):
426436
horizontalalignment='center', verticalalignment='center',
427437
zorder=self._clabel_zorder,
428438
color=self.labelMappable.to_rgba(cvalue, alpha=self.alpha),
429-
fontproperties=self.labelFontProps,
439+
fontproperties=self._label_font_props,
430440
clip_box=self.axes.bbox)
431441
self.labelTexts.append(t)
432442
self.labelCValues.append(cvalue)

0 commit comments

Comments
 (0)
0