There are lots of way to do this! Here are a few...
Using matplotlib: matplotlib.pyplot.grid
One would be to add gridlines at specific lat/lons. You're just using matplotlib (i.e., not cartopy with a specific projection), so the way to do this is to set specific major and minor tick locations, then draw lines with matplotlib.pyplot.grid
. See, e.g. How to add a grid line at a specific location in a matplotlib plot?:
import matplotlib.pyplot as plt
import geopandas as gpd
na = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
fig, ax = plt.subplots()
na.plot(ax=ax)
ax.set_ylim(20, 50)
ax.set_xlim(-130, -60)
# set latitude lines as major axis ticks
ax.set_yticks([23, 30, 41], minor=False)
ax.yaxis.grid(True, which='major')

Using cartopy: cartopy.mpl.geoaxes.GeoAxes.gridlines
Another option is to use cartopy in your plotting ot manage projections and to add gridlines using cartopy.mpl.geoaxes.GeoAxes.gridlines
. This is similar to the matplotlib option, but allows easy projection management:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import geopandas as gpd
na = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
fig, ax = plt.subplots(subplot_kw={'projection': ccrs.Orthographic(-95, 35)})
na.plot(ax=ax, transform=ccrs.PlateCarree())
ax.set_extent([-150, -40, 10, 60], crs=ccrs.PlateCarree())
# set latitude lines to be transformed into the axis's projection
ax.gridlines(ylocs=[23, 30, 41], xlocs=[]);

By manually drawing lines with matplotlib.pyplot.plot
Another option is simply to draw lines using matplotlib.pyplot.plot.html
. In this case, you need to decide what your [(x1, y1), (x2, y2)] points are. The simplest version of this is to use the x or y limits of the current axis:
import matplotlib.pyplot as plt
import geopandas as gpd
# set up plot
na = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
fig, ax = plt.subplots()
na.plot(ax=ax)
ax.set_ylim(20, 50)
ax.set_xlim(-130, -60)
# draw line using the (x1, x2) from xlim
xbounds = ax.get_xlim()
ax.plot(xbounds, [23, 23], color='grey')
ax.plot(xbounds, [30, 30], color='green')
ax.plot(xbounds, [41, 41], color='black')
