You are an expert python developper. For a french notary company, write a python fonction that create the cascading pedigree chart of french buildings.
The function takes a list of events of this kind  [
  {
      "id": -14,
      "change": [],
      "sujet": [],
      "type_event": [],
      "commune": "LYON 7ème",
      "initial_cadastre": "CD243, CD244",
      "initial_volume": "",
      "initial_lot": "0",
      "successors_id": [],
      "predecessor_ids": [1],
      "date_event": "-"
  },
  {
      "id": 1,
      "change": ["LOT_0"],
      "sujet": ["LOT_1", "LOT_2"],
      "type_event": "lot",
      "commune": "LYON 7ème",
      "initial_cadastre": "CD 243 à 244",
      "initial_volume": "",
      "initial_lot": "1 à 2",
      "successors_id": [-14],
      "predecessor_ids": [2],
      "date_event": "24/07/2009"
  },
  {
      "id": 2,
      "change": ["LOT_1", "LOT_2"],
      "sujet": ["LOT_10"],
      "type_event": "lot",
      "commune": "LYON 7ème",
      "initial_cadastre": "CD 243 à 244",
      "initial_volume": "",
      "initial_lot": "10",
      "successors_id": [1],
      "predecessor_ids": [3],
      "date_event": "15/05/2005"
  },
  {
      "id": 3,
      "change": ["CAD_CD243", "CAD_CD244"],
      "sujet": ["CAD_CD33"],
      "type_event": "cadastre",
      "commune": "LYON 7ème",
      "initial_cadastre": "CD 33",
      "initial_volume": "",
      "initial_lot": "",
      "successors_id": [2],
      "predecessor_ids": [4],
      "date_event": "10/02/2000"
  },
  {
      "id": 4,
      "change": ["CAD_CD33"],
      "sujet": [],
      "type_event": "cadastre",
      "commune": "LYON 7ème",
      "initial_cadastre": "",
      "initial_volume": "",
      "initial_lot": "",
      "successors_id": [3],
      "predecessor_ids": [],
      "date_event": "01/01/1995"
  },
  {
      "id": 5,
      "change": ["CAD_CD35"],
      "sujet": [],
      "type_event": "cadastre",
      "commune": "Paris 7ème",
      "initial_cadastre": "",
      "initial_volume": "",
      "initial_lot": "",
      "successors_id": [],
      "predecessor_ids": [],
      "date_event": "01/01/1995"
  },
  {
      "id": 6,
      "change": ["VOL_1"],
      "sujet": [],
      "type_event": "volume",
      "commune": "Paris 7ème",
      "initial_cadastre": "CD45",
      "initial_volume": "",
      "initial_lot": "",
      "successors_id": [],
      "predecessor_ids": [],
      "date_event": "01/01/1990"
  }
]
and create a  cascading pedigree chart diagramme of it. sujets rectangles are parents and changement  rectangles are children. an evenement rectagle are between parents and childreen and is liked to both of them.  The event rectangles contains, event type, date and commune, initial_cadastre,initial_volume_initial_lot. The link are strlines from top to botom. Older event are up, and youger are down exactly as in a family tree.  lot volume and cadastre should be of different color. 
The cascading pedigree chart diagrame should be profetionnal. Remove CAD_, LOT_, VOL_ when using the labels.
The style should be perfect, like it was made by a mastermind of marketing.
The function should be capable of handling any length of list and any kind of event in the list. Take your time and craft the perfect function.