Repository: sunpy/sunpy

Issue:
It is not clear how not using WCSAxes could lead to a problem when plotting a map
<!-- This comments are hidden when you submit the issue so you do not need to remove them!
Please be sure to check out our contributing guidelines: https://github.com/sunpy/sunpy/blob/master/CONTRIBUTING.rst
Please be sure to check out our code of conduct:
https://github.com/sunpy/sunpy/blob/master/CODE_OF_CONDUCT.rst -->

<!-- Please have a search on our GitHub repository to see if a similar issue has already been posted.
If a similar issue is closed, have a quick look to see if you are satisfied by the resolution.
If not please go ahead and open an issue! -->

### Description
<!-- Provide a general description of the bug. -->
It is possible to pass a standard axes object to a `map.plot(axes=ax)`. This will lead to unexpected behavior (likely positions will be off by 0.5 pixels).

### Expected behavior
<!-- What did you expect to happen. -->
It should likely not be allowed but at the very least, a clear warning should be issued that makes it clear

### Actual behavior
<!-- What actually happened. -->
<!-- Was the output confusing or poorly described? -->
Currently a vague warning is issued about the map not being oriented properly which suggests that there is something wrong with the map, not something wrong with the plotting.

### Steps to Reproduce
<!-- Ideally a code example could be provided so we can run it ourselves. -->
<!-- If you are pasting code, use tripe backticks (```) around your code snippet. -->

```python
ax = plt.subplot()
map1.plot(axes=ax)
```

I strongly recommend that the error not only describe the problem but give the user the information to correct it.


Discussion:

Resolving patch:
diff --git a/sunpy/map/mapbase.py b/sunpy/map/mapbase.py
--- a/sunpy/map/mapbase.py
+++ b/sunpy/map/mapbase.py
@@ -1694,16 +1694,15 @@ def plot(self, annotate=True, axes=None, title=True, **imshow_kwargs):
             axes = wcsaxes_compat.gca_wcs(self.wcs)
 
         if not _basic_plot:
-            # Check that the image is properly oriented
-            if (not wcsaxes_compat.is_wcsaxes(axes) and
-                    not np.array_equal(self.rotation_matrix, np.identity(2))):
-                warnings.warn("This map is not properly oriented. Plot axes may be incorrect.",
-                              SunpyUserWarning)
-
-            elif not wcsaxes_compat.is_wcsaxes(axes):
+            if not wcsaxes_compat.is_wcsaxes(axes):
                 warnings.warn("WCSAxes not being used as the axes object for this plot."
-                              " Plots may have unexpected behaviour.",
+                              " Plots may have unexpected behaviour. To fix this pass "
+                              "'projection=map' when creating the axes",
                               SunpyUserWarning)
+                # Check if the image is properly oriented
+                if not np.array_equal(self.rotation_matrix, np.identity(2)):
+                    warnings.warn("The axes of this map are not aligned to the pixel grid. Plot axes may be incorrect.",
+                                  SunpyUserWarning)
 
         # Normal plot
         imshow_args = copy.deepcopy(self.plot_settings)


Test patch: