Repository: sunpy/sunpy

Issue:
WCS plotting documentation and examples needed
### Description
Lots of examples are needed in the docs to show how WCS Axes plotting is done so that people use WCS rather than other axes. 

For example when plotting with WCS we need to describe and demonstrate converting between coord to pixel or defining frames in transform when overplotting points, lines, arrows etc. 

Also things like using set_xlim, set_ylim

See also #3018 






Discussion:
This documentation needs to provide clear examples that shows that `WCSAxes` default to degrees. This is the actual problem in #3101.
So just to give a bit more detail about what would be needed for this @Kate028:

I think for this we would want a new example to be created and put in the Example Gallery under [Plotting](https://docs.sunpy.org/en/stable/generated/gallery/index.html#plotting). I guess the idea of a descriptive example of how pixel and world coordinates work when plotting with WCSAxes. 

For example, when plotting a map, and you want to plot a point (rather than using `ax.plot_coord` with a SkyCoord) for example, you can use the `transform=` keyword. However I guess the tricky thing about it is that they points have to be given in `deg` rather than `arcsec` which can be confusing.

```python
my_map = sunpy.map.Map(sunpy.data.sample.AIA_171_IMAGE)
fig = plt.figure()
ax = fig.add_subplot(projection=my_map)
my_map.plot(axes=ax, clip_interval=(1, 99.9)*u.percent)

ax.scatter(500*u.arcsec.to(u.deg), 100*u.arcsec.to(u.deg), transform=ax.get_transform("world"))

ax.contour(my_map.data, levels=np.arange(0.051, 0.9, 0.01)*np.max(my_map.data),
           transform=ax.get_transform(my_map.wcs))
```
![image](https://user-images.githubusercontent.com/4620298/104011185-9f5c1d80-51a5-11eb-88ee-93fc2bf6dcd8.png)

or something similar with `.plot`
```python
xx = np.arange(0, 500)
yy = xx
ax.plot(xx*u.arcsec.to(u.deg), yy*u.arcsec.to(u.deg), 
           color='r', 
           transform=ax.get_transform("world"))
```
![image](https://user-images.githubusercontent.com/4620298/104012865-78531b00-51a8-11eb-9b2c-25c79d1b08f0.png)


So an example to show something like this was what I was thinking. It is actually somewhat described in [this example](https://docs.sunpy.org/en/stable/generated/gallery/plotting/wcsaxes_map_example.html#sphx-glr-generated-gallery-plotting-wcsaxes-map-example-py). 

However I think it would still be worthwhile to have a more detailed example of how pixel and world coodinates work with WCS Axes and to show how the different ways things can be plotted with WCSAxes. 


@hayesla Should i take "AIA_171_IMAGE" sample image for plotting or is there any other images that should be used also how many example are we supposed to insert into WCS plotting documentation. 
I would just use one image of the Sun, so the `AIA_171_IMAGE` from the sample data is a good one to use. You could then just show several examples of WCS plotting and some documentation on the one map, one such would be the example above. Does that make sense?
yes understood, thanks!


Resolving patch:
diff --git a/examples/plotting/wcsaxes_plotting_example.py b/examples/plotting/wcsaxes_plotting_example.py
new file mode 100644
--- /dev/null
+++ b/examples/plotting/wcsaxes_plotting_example.py
@@ -0,0 +1,67 @@
+"""
+=====================================
+Plotting points on a Map with WCSAxes
+=====================================
+
+This example demonstrates the plotting of a point, a line and an arch in pixel coordinates,
+world coordinates, and SkyCoords respectively when plotting a map with WCSAxes.
+"""
+import matplotlib.pyplot as plt
+import numpy as np
+
+from astropy import units as u
+from astropy.coordinates import SkyCoord
+
+import sunpy.data.sample
+import sunpy.map
+from sunpy.coordinates.utils import GreatArc
+
+###############################################################################
+# We will start by creating a map using an AIA 171 image.
+# Now we will plot a line on the map by using coordinates in arcseconds.
+# The array below `xx` and `yy` are the x and y coordinates that define a
+# line from the Sun center (at 0, 0) to the point (500, 500) in arcsecs.
+# When plotting a map a WCSAxes is created.
+# For plotting with WCSAxes, pixel coordinates are expected as a default, however, we can plot world coordinates (i.e. arcsec) by using the ``transform`` keyword.
+# Its important to note that when transforming between world and pixel coordinates
+# the world coordinates need to be in degrees rather than arcsecs.
+my_map = sunpy.map.Map(sunpy.data.sample.AIA_171_IMAGE)
+fig = plt.figure(figsize=(8, 8))
+ax = fig.add_subplot(projection=my_map)
+my_map.plot(axes=ax, clip_interval=(1, 99.9)*u.percent)
+
+xx = np.arange(0, 500)
+yy = xx
+
+# Note that the coordinates need to be in degrees rather than arcseconds.
+ax.plot(xx*u.arcsec.to(u.deg), yy*u.arcsec.to(u.deg),
+        color='r',
+        transform=ax.get_transform("world"),
+        label=f'WCS coordinate [{0*u.arcsec}, {500*u.arcsec}]')
+
+# Here we will plot a point in pixel coordinates (i.e. array index).
+# Let's define a pixel coordinate in the middle of the image, `pixel_coord`.
+# As this coordinate is in pixel space (rather than a world coordinates like arcsec) we do not need to use the `transform` keyword.
+pixel_coord = [my_map.data.shape[0]/2., my_map.data.shape[1]/2.] * u.pix
+ax.plot(pixel_coord[0], pixel_coord[1], 'x', color='w',
+        label=f'Pixel coordinate [{pixel_coord[0]}, {pixel_coord[1]}]')
+
+# As well as defining a point and using `.plot()`, you can also plot a point with WCSAxes using the `.plot_coord()` functionality using a coordinate as a SkyCoord.
+# We can demonstrate this by plotting a point and an arc on a map using two separate SkyCoords.
+# Here we will plot a point (at -250,-250) on the map using a SkyCoord.
+ax.plot_coord(SkyCoord(-250*u.arcsec, -250*u.arcsec, frame=my_map.coordinate_frame), "o",
+              label=f'SkyCoord [{-250*u.arcsec}, {-250*u.arcsec}]')
+
+# Finally, let's create a great arc between a start and end point defined as SkyCoords.
+start = SkyCoord(723 * u.arcsec, -500 * u.arcsec, frame=my_map.coordinate_frame)
+end = SkyCoord(-100 * u.arcsec, 900 * u.arcsec, frame=my_map.coordinate_frame)
+
+great_arc = GreatArc(start, end)
+
+my_map.plot(axes=ax, clip_interval=(1, 99.99)*u.percent)
+ax.plot_coord(great_arc.coordinates(), color='c',
+              label=f'SkyCoord [{723*u.arcsec}, {-500*u.arcsec}],\n \
+                               [{-100*u.arcsec}, {900*u.arcsec}]')
+
+plt.legend(loc="lower center")
+plt.show()


Test patch: