I have a shapefile with 3000 parcels. I am going to generate a map for each parcel. The map should be the same as the following paper map. I know that arcpy.mapping can be used for this purpose. I was wondering that if there is any open sources to generate these maps in Python.
Yes it’s possible. I suggest you try this manually and use the QGIS atlas to automate this. A starting point is to look at https://kartoza.com/en/blog/how-to-create-a-qgis-pdf-report-with-a-few-lines-of-python/ this was written for QGIS 2. You can also look at the PyQGIS documentation https://qgis.org/pyqgis/3.2/. Just on a side note we have done something similar using the https://kartoza.com/en/blog/a-new-plugin-to-manage-survey-parcels-in-qgis/