Repository: proplot-dev/proplot
Issue: can't set style to default

<!-- Thanks for helping us make proplot a better package! If this is a bug report, please use the template provided below. If this is a feature request, you can delete the template text (just try to be descriptive with your request). -->

### Description

I would like to set the style back to matplotlib's defaults (i.e., no background color, no grid, etc.). According to the documentation (https://proplot.readthedocs.io/en/latest/configuration.html#proplot-settings), this should be possible with `plot.rc.update(style='default')`, but this command crashes.
### Steps to reproduce


```python
import proplot as plot
plot.rc.update(style='default')
```

**Expected behavior**: style set back to matplotlib default, i.e., no background color, no grid, etc

**Actual behavior**: the update command fails with
```
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-29-2290163ff701> in <module>
      1 import proplot as plot
      2 
----> 3 plot.rc.update(style='default')

/opt/conda/lib/python3.8/site-packages/proplot/config.py in update(self, *args, **kwargs)
    786         kw.update(kwargs)
    787         for key, value in kw.items():
--> 788             self.__setitem__(prefix + key, value)
    789 
    790     @docstring.add_snippets

/opt/conda/lib/python3.8/site-packages/proplot/config.py in __setitem__(self, key, value)
    330         a ProPlot :ref:`added setting <rc_proplot>`.
    331         """
--> 332         kw_proplot, kw_matplotlib = self._get_synced_params(key, value)
    333         rc_proplot.update(kw_proplot)
    334         rc_matplotlib.update(kw_matplotlib)

/opt/conda/lib/python3.8/site-packages/proplot/config.py in _get_synced_params(self, key, value)
    399         elif key == 'style':
    400             if value is not None:
--> 401                 kw_matplotlib, kw_proplot = _get_style_dicts(value, infer=True)
    402 
    403         # Cycler

ValueError: too many values to unpack (expected 2)
```

### Equivalent steps in matplotlib

doesn't apply

### Proplot version

0.6.4


Changed files:
proplot/axes/plot.py, proplot/config.py, proplot/axes/base.py, proplot/internals/rcsetup.py

diff --git a/proplot/axes/base.py b/proplot/axes/base.py
index d3add6e5..9a65d875 100644
--- a/proplot/axes/base.py
+++ b/proplot/axes/base.py
@@ -822,6 +822,11 @@ lrtitle : str, optional
             positioned inside the axes. This can help them stand out on top
             of artists plotted inside the axes. Defaults are
             :rc:`abc.border` and :rc:`title.border`
+        abcbbox, titlebbox : bool, optional
+            Whether to draw a white bbox around titles and a-b-c labels
+            positioned inside the axes. This can help them stand out on top
+            of artists plotted inside the axes. Defaults are
+            :rc:`abc.bbox` and :rc:`title.bbox`
         titlepad : float, optional
             The padding for the inner and outer titles and a-b-c labels in
             arbitrary units (default is points). Default is :rc:`axes.titlepad`.
@@ -927,6 +932,10 @@ optional
             if loc in ('left', 'right', 'center'):
                 kw.pop('border', None)
                 kw.pop('borderwidth', None)
+                kw.pop('bbox', None)
+                kw.pop('bboxcolor', None)
+                kw.pop('bboxstyle', None)
+                kw.pop('bboxalpha', None)
             return kw
 
         # A-b-c labels
@@ -949,6 +958,10 @@ optional
                 {
                     'border': 'abc.border',
                     'borderwidth': 'abc.borderwidth',
+                    'bbox': 'abc.bbox',
+                    'bboxcolor': 'abc.bboxcolor',
+                    'bboxstyle': 'abc.bboxstyle',
+                    'bboxalpha': 'abc.bboxalpha',
                 },
                 context=True,
             )
@@ -1011,6 +1024,10 @@ optional
             {
                 'border': 'title.border',
                 'borderwidth': 'title.borderwidth',
+                'bbox': 'title.bbox',
+                'bboxcolor': 'title.bboxcolor',
+                'bboxstyle': 'title.bboxstyle',
+                'bboxalpha': 'title.bboxalpha',
             },
             context=True,
         )
diff --git a/proplot/axes/plot.py b/proplot/axes/plot.py
index 87e43a31..4cd12296 100644
--- a/proplot/axes/plot.py
+++ b/proplot/axes/plot.py
@@ -2179,7 +2179,7 @@ def _get_transform(self, transform):
 
 def _update_text(self, props):
     """
-    Monkey patch that adds pseudo "border" properties to text objects
+    Monkey patch that adds pseudo "border" and "bbox" properties to text objects
     without wrapping the entire class. We override update to facilitate
     updating inset titles.
     """
@@ -2201,6 +2201,20 @@ def _update_text(self, props):
             'color': facecolor,
             'path_effects': [mpatheffects.Stroke(**kwargs), mpatheffects.Normal()],
         })
+
+    bbox = props.pop('bbox', None)
+    bboxcolor = props.pop('bboxcolor', 'w')
+    bboxstyle = props.pop('bboxstyle', 'round')
+    bboxalpha = props.pop('bboxalpha', 0.5)
+
+    if bbox:
+        self.set_bbox({
+            'facecolor': bboxcolor,
+            'edgecolor': 'black',
+            'boxstyle': bboxstyle,
+            'alpha': bboxalpha,
+        })
+
     return type(self).update(self, props)
 
 
@@ -2209,11 +2223,12 @@ def text_wrapper(
     x=0, y=0, text='', transform='data',
     family=None, fontfamily=None, fontname=None, fontsize=None, size=None,
     border=False, bordercolor='w', borderwidth=2, borderinvert=False,
+    bbox=False, bboxcolor='w', bboxstyle='round', bboxalpha=0.5,
     **kwargs
 ):
     """
     Enables specifying `tranform` with a string name and adds a feature for
-    drawing borders around text.
+    drawing borders and bbox around text.
 
     Note
     ----
@@ -2248,7 +2263,14 @@ def text_wrapper(
         The color of the text border. Default is ``'w'``.
     borderinvert : bool, optional
         If ``True``, the text and border colors are swapped.
-
+    bbox : bool, optional
+        Whether to draw bbox around text.
+    bboxcolor : color-spec, optional
+        The color of the text bbox. Default is ``'w'``.
+    bboxstyle : boxstyle, optional
+        The style of the bbox. Default is ``'round'``.
+    bboxalpha : float, optional
+        The alpha for the bbox. Default is ``'0.5'``.
     Other parameters
     ----------------
     **kwargs
@@ -2287,6 +2309,10 @@ def text_wrapper(
         'bordercolor': bordercolor,
         'borderinvert': borderinvert,
         'borderwidth': borderwidth,
+        'bbox': bbox,
+        'bboxcolor': bboxcolor,
+        'bboxstyle': bboxstyle,
+        'bboxalpha': bboxalpha,
     })
     return obj
 
diff --git a/proplot/config.py b/proplot/config.py
index 1ba2d117..419beea3 100644
--- a/proplot/config.py
+++ b/proplot/config.py
@@ -1158,7 +1158,11 @@ def _get_style_dicts(style, infer=False, filter=True):
     # Always apply the default style *first* so styles are rigid
     kw_matplotlib = _get_default_dict()
     if style == 'default' or style is mpl.rcParamsDefault:
-        return kw_matplotlib
+        if infer:
+            kw_proplot = _infer_added_params(kw_matplotlib)
+            return kw_matplotlib, kw_proplot
+        else:
+            return kw_matplotlib
 
     # Apply limited deviations from the matplotlib style that we want to propagate to
     # other styles. Want users selecting stylesheets to have few surprises, so
diff --git a/proplot/internals/rcsetup.py b/proplot/internals/rcsetup.py
index 2a1b2344..c8987988 100644
--- a/proplot/internals/rcsetup.py
+++ b/proplot/internals/rcsetup.py
@@ -266,6 +266,22 @@ _rc_proplot = {
         1.5,
         'Width of the white border around a-b-c labels.'
     ),
+    'abc.bbox': (
+        True,
+        'Boolean, whether to draw semi-transparent bbox around the a-b-c.'
+    ),
+    'abc.bboxcolor': (
+        'w',
+        'color-spec, the color of the a-b-c bbox.'
+    ),
+    'abc.bboxstyle': (
+        'round',
+        'boxstyle, the style of the a-b-c bbox.'
+    ),
+    'abc.bboxalpha': (
+        0.5,
+        'float, The alpha for the a-b-c bbox.'
+    ),
     'abc.color': (
         'black',
         'a-b-c label color.'
@@ -862,6 +878,23 @@ _rc_proplot = {
         1.5,
         'Width of the white border around titles.'
     ),
+    'title.bbox': (
+        True,
+        'Boolean, whether to draw semi-transparent bbox around the title.'
+        'when :rcraw:`title.loc` is inside the axes.'
+    ),
+    'title.bboxcolor': (
+        'w',
+        'color-spec, the color of the title bbox.'
+    ),
+    'title.bboxstyle': (
+        'round',
+        'boxstyle, the style of the title bbox.'
+    ),
+    'title.bboxalpha': (
+        0.5,
+        'float, The alpha for the title bbox.'
+    ),
     'title.color': (
         'black',
         'Axes title color.'