3636from .facets .layout import Layout
3737from .geoms .geom_blank import geom_blank
3838from .guides .guides import guides
39- from .iapi import mpl_save_view
39+ from .iapi import labels_view , mpl_save_view
4040from .layer import Layers
41- from .mapping .aes import aes , make_labels
41+ from .mapping .aes import aes
4242from .options import get_option
4343from .scales .scales import Scales
4444from .themes .theme import theme , theme_get
5555 from plotnine .composition import Compose
5656 from plotnine .coords .coord import coord
5757 from plotnine .facets .facet import facet
58- from plotnine .layer import layer
5958 from plotnine .typing import DataLike
6059
6160 class PlotAddable (Protocol ):
@@ -118,7 +117,7 @@ def __init__(
118117 self .data = data
119118 self .mapping = mapping if mapping is not None else aes ()
120119 self .facet : facet = facet_null ()
121- self .labels = make_labels ( self . mapping )
120+ self .labels = labels_view ( )
122121 self .layers = Layers ()
123122 self .guides = guides ()
124123 self .scales = Scales ()
@@ -301,10 +300,7 @@ def draw(self, *, show: bool = False) -> Figure:
301300 from ._mpl .layout_manager import PlotnineLayoutEngine
302301
303302 with plot_context (self , show = show ):
304- if not hasattr (self , "figure" ):
305- self ._create_figure ()
306- figure = self .figure
307-
303+ figure = self ._setup ()
308304 self ._build ()
309305
310306 # setup
@@ -327,6 +323,16 @@ def draw(self, *, show: bool = False) -> Figure:
327323
328324 return figure
329325
326+ def _setup (self ) -> Figure :
327+ """
328+ Setup this instance for the building process
329+ """
330+ if not hasattr (self , "figure" ):
331+ self ._create_figure ()
332+
333+ self .labels .add_defaults (self .mapping .labels )
334+ return self .figure
335+
330336 def _create_figure (self ):
331337 """
332338 Create gridspec for the panels
@@ -548,21 +554,6 @@ def _save_filename(self, ext: str) -> Path:
548554 hash_token = abs (self .__hash__ ())
549555 return Path (f"plotnine-save-{ hash_token } .{ ext } " )
550556
551- def _update_labels (self , layer : layer ):
552- """
553- Update label data for the ggplot
554-
555- Parameters
556- ----------
557- layer : layer
558- New layer that has just been added to the ggplot
559- object.
560- """
561- mapping = make_labels (layer .mapping )
562- default = make_labels (layer .stat .DEFAULT_AES )
563- mapping .add_defaults (default )
564- self .labels .add_defaults (mapping )
565-
566557 def save_helper (
567558 self : ggplot ,
568559 filename : Optional [str | Path | BytesIO ] = None ,
0 commit comments