Repository: yt-project/yt

Issue:
set_buff_size doesn't work for OffAxisProjectionPlot
### Bug report

**Bug summary**

The `set_buff_size` method doesn't seem to take actual effect for `OffAxisProjectionPlot`. @tkc004 first encountered this in his research.

```python
import yt

ds = yt.load('FIRE_M12i_ref11/snapshot_600.hdf5')
field = ('gas', 'density')
p = yt.OffAxisProjectionPlot(ds, (1, 1, 1), field, width=(100, 'kpc'))
p.set_buff_size(10)
print(p.buff_size)
print(p.frb[field].shape)
```

**Actual outcome**

```
(10, 10)
(800, 800)
```

**Expected outcome**

```
(10, 10)
(10, 10)
```

And if you take a look of the plot from `p.show()`, it's also obvious the resolution hasn't changed.

**Version Information**
  * yt version: 3.5.1 and 4.0.dev0



Discussion:

Resolving patch:
diff --git a/yt/visualization/fixed_resolution.py b/yt/visualization/fixed_resolution.py
--- a/yt/visualization/fixed_resolution.py
+++ b/yt/visualization/fixed_resolution.py
@@ -535,7 +535,7 @@ def __getitem__(self, item):
                              self.bounds[3] - self.bounds[2],
                              self.bounds[5] - self.bounds[4]))
         buff = off_axis_projection(dd.dd, dd.center, dd.normal_vector,
-                                   width, dd.resolution, item,
+                                   width, self.buff_size, item,
                                    weight=dd.weight_field, volume=dd.volume,
                                    no_ghost=dd.no_ghost,
                                    interpolated=dd.interpolated,
diff --git a/yt/visualization/plot_window.py b/yt/visualization/plot_window.py
--- a/yt/visualization/plot_window.py
+++ b/yt/visualization/plot_window.py
@@ -1574,7 +1574,7 @@ class OffAxisProjectionDummyDataSource(object):
     _type_name = 'proj'
     _key_fields = []
     def __init__(self, center, ds, normal_vector, width, fields,
-                 interpolated, resolution = (800,800), weight=None,
+                 interpolated, weight=None,
                  volume=None, no_ghost=False, le=None, re=None,
                  north_vector=None, method="integrate",
                  data_source=None):
@@ -1590,7 +1590,6 @@ def __init__(self, center, ds, normal_vector, width, fields,
         fields = self.dd._determine_fields(fields)
         self.fields = fields
         self.interpolated = interpolated
-        self.resolution = resolution
         if weight is not None:
             weight = self.dd._determine_fields(weight)[0]
         self.weight_field = weight
@@ -1712,7 +1711,7 @@ def __init__(self, ds, normal, fields, center='c', width=None,
                             bounds[5] - bounds[4]))
         OffAxisProj = OffAxisProjectionDummyDataSource(
             center_rot, ds, normal, oap_width, fields, interpolated,
-            weight=weight_field,  volume=volume, no_ghost=no_ghost,
+            weight=weight_field, volume=volume, no_ghost=no_ghost,
             le=le, re=re, north_vector=north_vector, method=method,
             data_source=data_source)
 
@@ -1736,8 +1735,6 @@ def __init__(self, ds, normal, fields, center='c', width=None,
             axes_unit = get_axes_unit(width, ds)
         self.set_axes_unit(axes_unit)
 
-    def _recreate_frb(self):
-        super(OffAxisProjectionPlot, self)._recreate_frb()
 
 class WindowPlotMPL(ImagePlotMPL):
     """A container for a single PlotWindow matplotlib figure and axes"""


Test patch: