code: def _plot_properties(self, key, element):
          
          init = 'plot' not in self.handles
          size_multiplier = self.renderer.size/100.
          options = self._traverse_options(element, 'plot', ['width', 'height'], defaults=False)
  
          logger = self.param if init else None
          aspect_props, dimension_props = compute_layout_properties(
              self.width, self.height, self.frame_width, self.frame_height,
              options['width'], options['height'], self.aspect, self.data_aspect,
              self.responsive, size_multiplier, logger=logger)
  
          if not init:
              if aspect_props['aspect_ratio'] is None:
                  aspect_props['aspect_ratio'] = self.state.aspect_ratio
  
          if self.dynamic and aspect_props['match_aspect']:
              # Sync the plot size on dynamic plots to support accurate
              # scaling of dimension ranges
              stream = PlotSize(subscribers=[self._update_size])
              self.callbacks.append(PlotSizeCallback(self, [stream], None))
  
          plot_props = {
              'margin':        self.margin,
              'max_width':     self.max_width,
              'max_height':    self.max_height,
              'min_width':     self.min_width,
              'min_height':    self.min_height
          }
          plot_props.update(aspect_props)
          if not self.drawn:
              plot_props.update(dimension_props)
  
          if self.bgcolor:
              plot_props['background_fill_color'] = self.bgcolor
          if self.border is not None:
              for p in ['left', 'right', 'top', 'bottom']:
                  plot_props['min_border_'+p] = self.border
          lod = dict(self.param.defaults().get('lod', {}), **self.lod)
          for lod_prop, v in lod.items():
              plot_props['lod_'+lod_prop] = v
          return plot_props
docs: Returns a dictionary of plot properties.