MCPcopy Index your code
hub / github.com/matplotlib/matplotlib / get_spine_transform

Method get_spine_transform

lib/matplotlib/spines.py:356–413  ·  view source on GitHub ↗

Return the spine transform.

(self)

Source from the content-addressed store, hash-verified

354 return self._position
355
356 def get_spine_transform(self):
357 """Return the spine transform."""
358 self._ensure_position_is_set()
359
360 position = self._position
361 if isinstance(position, str):
362 if position == 'center':
363 position = ('axes', 0.5)
364 elif position == 'zero':
365 position = ('data', 0)
366 assert len(position) == 2, 'position should be 2-tuple'
367 position_type, amount = position
368 _api.check_in_list(['axes', 'outward', 'data'],
369 position_type=position_type)
370 if self.spine_type in ['left', 'right']:
371 base_transform = self.axes.get_yaxis_transform(which='grid')
372 elif self.spine_type in ['top', 'bottom']:
373 base_transform = self.axes.get_xaxis_transform(which='grid')
374 else:
375 raise ValueError(f'unknown spine spine_type: {self.spine_type!r}')
376
377 if position_type == 'outward':
378 if amount == 0: # short circuit commonest case
379 return base_transform
380 else:
381 offset_vec = {'left': (-1, 0), 'right': (1, 0),
382 'bottom': (0, -1), 'top': (0, 1),
383 }[self.spine_type]
384 # calculate x and y offset in dots
385 offset_dots = amount * np.array(offset_vec) / 72
386 return (base_transform
387 + mtransforms.ScaledTranslation(
388 *offset_dots, self.get_figure(root=False).dpi_scale_trans))
389 elif position_type == 'axes':
390 if self.spine_type in ['left', 'right']:
391 # keep y unchanged, fix x at amount
392 return (mtransforms.Affine2D.from_values(0, 0, 0, 1, amount, 0)
393 + base_transform)
394 elif self.spine_type in ['bottom', 'top']:
395 # keep x unchanged, fix y at amount
396 return (mtransforms.Affine2D.from_values(1, 0, 0, 0, 0, amount)
397 + base_transform)
398 elif position_type == 'data':
399 if self.spine_type in ('right', 'top'):
400 # The right and top spines have a default position of 1 in
401 # axes coordinates. When specifying the position in data
402 # coordinates, we need to calculate the position relative to 0.
403 amount -= 1
404 if self.spine_type in ('left', 'right'):
405 return mtransforms.blended_transform_factory(
406 mtransforms.Affine2D().translate(amount, 0)
407 + self.axes.transData,
408 self.axes.transData)
409 elif self.spine_type in ('bottom', 'top'):
410 return mtransforms.blended_transform_factory(
411 self.axes.transData,
412 mtransforms.Affine2D().translate(0, amount)
413 + self.axes.transData)

Callers 3

set_positionMethod · 0.95
get_xaxis_transformMethod · 0.80
get_yaxis_transformMethod · 0.80

Calls 6

from_valuesMethod · 0.80
translateMethod · 0.80
get_yaxis_transformMethod · 0.45
get_xaxis_transformMethod · 0.45
get_figureMethod · 0.45

Tested by

no test coverage detected