|
28 | 28 | #warnings.simplefilter('ignore', SettingWithCopyWarning)
|
29 | 29 | warnings.simplefilter('ignore')
|
30 | 30 |
|
31 |
| -__version__ = "0.6.0" |
| 31 | +__version__ = "0.6.1" |
32 | 32 | _basefigure = plt.figure(figsize=(1,1))
|
33 | 33 | _render = _basefigure.canvas.get_renderer()
|
34 | 34 | _scale = Affine2D().scale(1./_basefigure.dpi)
|
@@ -1656,8 +1656,15 @@ def __getitem__(self, item):
|
1656 | 1656 | return _axes_dict[item]
|
1657 | 1657 |
|
1658 | 1658 | elif type(item) == tuple:
|
1659 |
| - self.bricks_dict[item[0]]._parent = self._label |
1660 |
| - return self.bricks_dict[item[0]] |
| 1659 | + new_bricks_dict = {} |
| 1660 | + for key in item: |
| 1661 | + if type(key) == str: |
| 1662 | + new_bricks_dict[key] = self.bricks_dict[key] |
| 1663 | + elif type(key) in (Bricks, Brick, cBrick): |
| 1664 | + new_bricks_dict[key] = self.bricks_dict[key.get_label()] |
| 1665 | + new_bricks = Bricks(bricks_dict=new_bricks_dict) |
| 1666 | + new_bricks._parent = self._label |
| 1667 | + return new_bricks |
1661 | 1668 |
|
1662 | 1669 | def __getattribute__(self, name):
|
1663 | 1670 | if name == "case":
|
@@ -1772,6 +1779,52 @@ def change_plotsize(self, new_size):
|
1772 | 1779 | x0, x1, y0, y1 = self.get_outer_corner()
|
1773 | 1780 | self._originalsize = (abs(x1-x0), abs(y0-y1))
|
1774 | 1781 |
|
| 1782 | + def align_xlabels(self, keys=None): |
| 1783 | + global _basefigure |
| 1784 | + renderer = _basefigure.canvas.get_renderer() |
| 1785 | + if keys is None: |
| 1786 | + keys = self.bricks_dict.keys() |
| 1787 | + else: |
| 1788 | + pass |
| 1789 | + |
| 1790 | + miny = None |
| 1791 | + for key in keys: |
| 1792 | + x, y = self[key].xaxis.get_label().get_position() |
| 1793 | + text = self[key].xaxis.get_label().get_text() |
| 1794 | + if miny is None or y < miny: |
| 1795 | + miny = y |
| 1796 | + |
| 1797 | + for key in keys: |
| 1798 | + pad = self[key].xaxis.labelpad |
| 1799 | + x, y = self[key].xaxis.get_label().get_position() |
| 1800 | + text = self[key].xaxis.get_label().get_text() |
| 1801 | + self[key].set_xlabel(text, x=x, y=y, labelpad=pad + (y-miny)*(72 / _basefigure.dpi)) |
| 1802 | + |
| 1803 | + def align_ylabels(self, keys=None, ha="left"): |
| 1804 | + global _basefigure |
| 1805 | + renderer = _basefigure.canvas.get_renderer() |
| 1806 | + if keys is None: |
| 1807 | + keys = self.bricks_dict.keys() |
| 1808 | + else: |
| 1809 | + pass |
| 1810 | + |
| 1811 | + minx = None |
| 1812 | + for key in keys: |
| 1813 | + x, y = self[key].yaxis.get_label().get_position() |
| 1814 | + text = self[key].yaxis.get_label().get_text() |
| 1815 | + #coordinate = self[key].transAxes.inverted() |
| 1816 | + #bbox_text = self[key].yaxis.get_label().get_window_extent(renderer=renderer) |
| 1817 | + #bbox_text = Bbox(coordinate.transform(bbox_text)) |
| 1818 | + #x = x + bbox_text.width |
| 1819 | + if minx is None or x < minx: |
| 1820 | + minx = x |
| 1821 | + |
| 1822 | + for key in keys: |
| 1823 | + pad = self[key].yaxis.labelpad |
| 1824 | + x, y = self[key].yaxis.get_label().get_position() |
| 1825 | + text = self[key].yaxis.get_label().get_text() |
| 1826 | + self[key].set_ylabel(text, x=x, y=y, labelpad=pad + (x-minx)*(72 / _basefigure.dpi)) |
| 1827 | + |
1775 | 1828 | def set_supxlabel(self, xlabel, labelpad=None, *, loc=None, **args):
|
1776 | 1829 | """
|
1777 | 1830 |
|
|
0 commit comments