I plot a figure as below:
plt.plot(lon,lat,'ro-')
plt.show()

but the lines aren't closed. How can I make them closed as polygons? thank you
Use matplotlib.pyplot.fill(lon,lat,fill=False) instead of plot().
See http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.fill for details. The color string refers to the interior, so to use red for the polygon, use
plt.fill(lon, lat, edgecolor='r', fill=False)
and continue to use plot() to place circles on the vertices if desired.