Just for completeness, Nathan and I were discussing in irc but I'll respond here my thoughts up until now. At least the first piece about dx is a bug:
I think this comes from dx being an "excluded" field in a fixed resolution buffer, and when the SlicePlot goes to loop over all the data source fields, it gets explicitly ignored. Obviously this should not be the case if the user explicitly adds a slice of dx. This is a bug. In yt/visualization/fixed_resolution.py you can see why dy works:
_exclude_fields = ['pz','dpz','dx','x','y','z']
For the rest of the issues, I think if you get rid of ValidateSpatial for everything that you have in the notebook, it runs fine. ValidateSpatial of more than 0 will mean you need to account for that and take the correct slices. That said, in 2d I can't make sense of the shapes that come out of ValidateSpatial(1) for GridLevel. I don't know what is up with that.
I'll also just say that either:
pf.h; pf.field_info[field].take_log=False is easier than a derived field just to set the log.
One last thing -- I'm not sure why the following code has 2 returns in the universal_fields.py.
def _dy(field, data):
return data.dds <--- note the return here. The rest should probably be removed. Not sure why it is even there.
return np.ones(data.ActiveDimensions, dtype='float64') * data.dds
add_field('dy_lin', function=_dy, display_field=False,