diff --git a/requirements.txt b/requirements.txt
index 3864ef2f61a3af5e388b7b86d033f9e9adeac38f..9000bd4cfc810bb4e44a3ff680626ff4560f8f80 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,3 +5,5 @@ numpy
 regex==2020.2.20
 lazyparser==0.2.0
 coloredlogs==10.0
+seaborn
+matplotlib
\ No newline at end of file
diff --git a/src/figures_utils/__init__.py b/src/figures_utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/figures_utils/__main__.py b/src/figures_utils/__main__.py
index c24509bab891da0b22cf5986b8b754bce4d72580..e15d9e31b5b9c5cd3d0b2c2c0df32c773d644b03 100644
--- a/src/figures_utils/__main__.py
+++ b/src/figures_utils/__main__.py
@@ -9,6 +9,9 @@ expected
 """
 
 from . exons_interactions import launch_figures_creation
+from . exons_interactions import get_info_from_database
+import sqlite3
+from .config_figures import Config
 
 
 def launcher():
@@ -17,7 +20,13 @@ def launcher():
     regulated by a splicing factor are more often co-localized than randomly \
     expected
     """
-    launch_figures_creation()
+    list_sf = get_info_from_database(sqlite3.connect(Config.db_file),
+                                     """SELECT sf_name
+                                        FROM cin_project_splicing_lore""")
+    list_sf = list(set(list_sf))
+
+    for sf in list_sf:
+        launch_figures_creation(sf)
 
 
 launcher()
diff --git a/src/figures_utils/config_figures.py b/src/figures_utils/config_figures.py
index 40f9f8f11ef21add54b7c50b99556d0918e09ba1..7e3e7044d6f34e03f6a8c3070cbcaad0496555a6 100644
--- a/src/figures_utils/config_figures.py
+++ b/src/figures_utils/config_figures.py
@@ -15,4 +15,10 @@ class Config:
     A class containing every parameters used in the submodule figures_utils
     """
     results = Path(__file__).parents[2] / "results"
+    figures_all_chia_pet_datasets = results / "figures_all_chia_pet_datasets"
+    figures_all_chia_pet_datasets_2 = results / "figures_all_chia_pet_" \
+                                                "datasets_after_filtering"
+    figures_by_chia_pet_dataset = results / "figures_by_chia_pet_dataset"
     db_file = results / 'chia_pet_database.db'
+    draw_number = 1000
+    file_datasets_filtering = results / "projects_filtering.txt"
diff --git a/src/figures_utils/exons_interactions.py b/src/figures_utils/exons_interactions.py
index fa9087460b6c90f11b2d640bf2643f07978ec104..19e941dc26c8da767e9091b988b1dbe87cf40835 100644
--- a/src/figures_utils/exons_interactions.py
+++ b/src/figures_utils/exons_interactions.py
@@ -3,7 +3,11 @@
 # -*- coding: UTF-8 -*-
 
 """
-##TO ADD
+Produce figures with:
+- the percentage of exons down regulated (by the studied SF) in interaction
+- the percentage of exons up regulated (by the studied SF) in interaction
+- the percentage of exons control in interaction (in regards with the number of
+exons down and up regulated by the studied SF)
 """
 
 import sqlite3
@@ -13,8 +17,10 @@ import random
 import pandas as pd
 import doctest
 from typing import List, Tuple, Dict
-
-SF = "HNRNPC"
+import statistics
+import matplotlib.pyplot as plt
+from datetime import datetime
+from numpy import mean
 
 
 # ########################GET DATA FROM THE DATABASE#########################
@@ -28,8 +34,8 @@ def get_info_from_database(cnx: sqlite3.Connection, query: str) -> list:
 
     :param cnx: connexion to the ChIA-PET database
     :param query: the SQL query that allows us to get data from the database
-    :return list_exons: the list of the ID of all fasterdb exons, e.g:
-    ['9995_6', '9995_7', '9996_1', '9996_10']
+    :return list_data: the list with the data obtained, e.g: ['9995_6',
+    '9995_7', '9996_1', '9996_10']
 
     >>> get_info_from_database(sqlite3.connect(Config.db_file),
     ... 'SELECT id_sample FROM cin_projects LIMIT 2')
@@ -180,16 +186,19 @@ def get_every_events_4_a_sl(cnx: sqlite3.Connection, sf_name: str,
 def get_co_localisation_by_project(cnx: sqlite3.Connection, id_project: str) \
         -> List[Tuple[str, str]]:
     """
-    Return The list of exons that are co-localized.
+    Allows to retrieve in the database the pairs of interacting exons,
+    according to a ChIA-PET dataset.
 
-    :param cnx: Connection to chi-pet database.
-    :param id_project: The id of a project
-    :return: The exons co-localized 2 by 2.
+    :param cnx: connexion to the ChIA-PET database
+    :param id_project: the ID of the ENCODE or GEO project that will allow us
+    to obtain the list of exons in interactions, e.g: GSM1517080.
+    :return res: the exons co-localized 2 by 2, e.g: [('9992_3', '9992_4'),
+    ('9992_5', '9992_8')]
     """
     cursor = cnx.cursor()
     query = """SELECT exon1, exon2
-                   FROM cin_exon_interaction
-                   WHERE id_project = ?"""
+               FROM cin_exon_interaction
+               WHERE id_project = ?"""
     cursor.execute(query, (id_project,))
     res = cursor.fetchall()
     cursor.close()
@@ -199,11 +208,17 @@ def get_co_localisation_by_project(cnx: sqlite3.Connection, id_project: str) \
 def get_colocalized_exons(interaction: List[Tuple[str, str]], id_project: str
                           ) -> Dict[str, List]:
     """
-    Get a dictionary linking each exon to it's neighbors.
+    Obtain a dictionary, with for each exon the list of exons with which it
+    interacts, e.g: '9843_10.GSM1234': ['9843_2', '9843_3', '9843_4'],
+    according to a ChIA-PET dataset.
 
-    :param interaction: A list of co-localized exons
-    :param id_project: The id of a project
-    :return: dictionary linking each exon to it's neighbors.
+    :param interaction: the exons co-localized 2 by 2, e.g: [('9992_3',
+    '9992_4'), ('9992_5', '9992_8')], see get_co_localisation_by_project().
+    :param id_project: the ID of the ENCODE or GEO project that will allow us
+    to obtain the list of exons in interactions, e.g: GSM1517080.
+    :return exons_interactions: a dictionary, with for each exon the list of
+    exons with which it interacts, e.g: '9843_10.GSM1234': ['9843_2', '9843_3',
+    '9843_4'], according to a ChIA-PET dataset.
 
     >>> interaction = [('1_1', '2_1'), ('1_1', '3_1'), ('3_1', '2_1')]
     >>> res = {'1_1.test': ['2_1', '3_1'], '2_1.test': ['1_1', '3_1'],
@@ -225,15 +240,17 @@ def get_colocalized_exons(interaction: List[Tuple[str, str]], id_project: str
 def get_exons_in_interaction(cnx: sqlite3.Connection, id_project: str) -> Dict:
     """
     Allows:
-    - to retrieve in the database the pairs of interacting exons, according to
-    a ChIA-PET dataset.
-    - then to obtain a dictionary, with for each exon the list of exons with
-    which it interacts, e.g: '9843_10.GSM1234': ['9843_2', '9843_3', '9843_4'],
-    according to a ChIA-PET dataset.
+    - to launch the get_co_localisation_by_project() function, so to retrieve
+    in the database the pairs of interacting exons, according to a ChIA-PET
+    dataset.
+    - to launch the get_colocalized_exons() function, so to obtain a
+    dictionary, with for each exon the list of exons with which it interacts,
+    e.g: '9843_10.GSM1234': ['9843_2', '9843_3', '9843_4'], according to a
+    ChIA-PET dataset.
 
     :param cnx: connexion to the ChIA-PET database
     :param id_project: the ID of the ENCODE or GEO project that will allow us
-    to obtain the list of exons in interactions.
+    to obtain the list of exons in interactions, e.g: GSM1517080.
     :return exons_interactions: a dictionary, with for each exon the list of
     exons with which it interacts, e.g: '9843_10.GSM1234': ['9843_2', '9843_3',
     '9843_4'], according to a ChIA-PET dataset.
@@ -244,10 +261,15 @@ def get_exons_in_interaction(cnx: sqlite3.Connection, id_project: str) -> Dict:
 
 def combine_project_dictionary(projects_dictionary: Dict[str, List]):
     """
-    Combine the dictionary of interactions of many projects into one.
+    See get_every_exons_in_interaction() - part 2.
 
-    :param projects_dictionary: dictionary of interactions of many projects
-    :return: The combined dictionary
+    :param projects_dictionary: a total dictionnary, in which we have for each
+    dataset of ChIA-PET, a dictionary, with for each exon the list of exons
+    with which it interacts, e.g: '9843_10.GSM1234': ['9843_2', '9843_3',
+    '9843_4'].
+    :return final_exons_interactions: a dictionary with for each exon the
+    complete list of exons with which it interacts, for all the datasets that
+    we have, e.g: '4448_11': ['4448_20'], '4857_5': ['4878_1', '494_6'].
 
     >>> res = {'1_1.test': ['2_1', '3_1'], '2_1.test': ['1_1', '3_1'],
     ... '3_1.test': ['1_1', '2_1'], '1_1.test2': ['2_1', '3_1', '4_1'],
@@ -276,15 +298,15 @@ def get_every_exons_in_interaction() -> Dict[str, List]:
     - obtain for each dataset of ChIA-PET, a dictionary, with for each exon
     the list of exons with which it interacts, e.g: '9843_10.GSM1234':
     ['9843_2', '9843_3', '9843_4']. All dictionaries are stored in one total
-    dictionary, see get_exons_in_interaction().
-    - from this total dictionary, we obtain for an exon the complete list of
-    exons with which it interacts, not only for one ChIA-PET dataset, but for
-    all the datasets that we have, e.g: '4448_11': ['4448_20'], '4857_5':
-    ['4878_1', '494_6'].
-
-    :return final_exons_interactions: a dictionary with for each exon the
-    complete list of exons with which it interacts, for all the datasets that
+    dictionary: dict_interaction, see get_exons_in_interaction().
+    - to launch the combine_project_dictionary() function: from the total
+    dictionary, we obtain for an exon the complete list of exons with which it
+    interacts, not only for one ChIA-PET dataset, but for all the datasets that
     we have, e.g: '4448_11': ['4448_20'], '4857_5': ['4878_1', '494_6'].
+
+    :return: a dictionary with for each exon the complete list of exons with
+    which it interacts, for all the datasets that we have, e.g: '4448_11':
+    ['4448_20'], '4857_5': ['4878_1', '494_6'].
     """
     dict_interaction = {}
     id_chia_pets = get_info_from_database(sqlite3.connect(Config.db_file),
@@ -294,48 +316,47 @@ def get_every_exons_in_interaction() -> Dict[str, List]:
         inter = get_exons_in_interaction(sqlite3.connect(Config.db_file),
                                          id_chia_pet)
         dict_interaction.update(inter)
-
     return combine_project_dictionary(dict_interaction)
 
 
-# ##############PRODUCE DATA FOR THE CONTROLs PART OF THE FIGURE###############
-def find_controls_exons_in_interaction(final_exons_interactions: Dict,
-                                       list_exons_ctrl: List):
+# ################FIND THE PERCENTAGE OF EXONS IN INTERACTION##################
+def find_exons_in_interaction(final_exons_interactions: Dict,
+                              list_exons: List) -> int:
     """
-    - For each exon control of the list list_exons_ctrl it allows to obtain the
-    complete list of exons with which it interacts, for all the datasets that
-    we have.
-    - Then for each exon control, we look in the complete list of exons with
-    which it interacts, if at least one of the exons is also a exon control.
+    - For each exon of the list to study, it allows to obtain the complete list
+    of exons with which it interacts, according to all the datasets that we
+    have.
+    - Then for each exon studied, we look in the complete list of exons with
+    which it interacts, if at least one of the exons is also a exon studied.
+    And so we count how many exons of the list to study are in interaction.
 
     :param final_exons_interactions: a dictionary with for each exon the
     complete list of exons with which it interacts, for all the datasets that
     we have, e.g: '4448_11': ['4448_20'], '4857_5': ['4878_1', '494_6'], see
     get_every_exons_in_interaction().
-    :param list_exons_ctrl: a list of exons control of size identical to that
-    of the SF studied according to its regulation (down or up), e.g:
-    ['15919_3', '7546_8', '4946_3', '3158_10'].
-    :return nb_exons_ctrl_int: the number of exons control in interaction with
-    at least one other exon control.
+    :param list_exons: the list of exons that we want to study in order to
+    determine how many of them are in interaction.
+    :return count: the number of exons studied in interaction with at least one
+    other exon studied. So, the number of exons studied in interaction.
 
     >>> inter_dic = {'1_1': ['2_1', '3_1'],
     ... '3_1': ['2_1', '1_1'],
     ... '5_1': ['1_1', '6_1']}
     >>> list_exons_ctrl = ['1_1', '3_1', '5_1']
-    >>> find_controls_exons_in_interaction(inter_dic, list_exons_ctrl)
+    >>> find_exons_in_interaction(inter_dic, list_exons_ctrl)
     3
     >>> list_exons_ctrl = ['6_1', '1_1', '3_1']
-    >>> find_controls_exons_in_interaction(inter_dic, list_exons_ctrl)
+    >>> find_exons_in_interaction(inter_dic, list_exons_ctrl)
     2
     >>> inter_dic = {'1_1': ['2_1', '3_1'],
     ... '3_1': ['7_1', '19_1'],
     ... '5_1': ['17_1', '6_1']}
-    >>> find_controls_exons_in_interaction(inter_dic, list_exons_ctrl)
+    >>> find_exons_in_interaction(inter_dic, list_exons_ctrl)
     1
     """
     count = 0
-    for exon in list_exons_ctrl:
-        tmp = [e for e in list_exons_ctrl if e != exon]
+    for exon in list_exons:
+        tmp = [e for e in list_exons if e != exon]
         try:
             for iexon in final_exons_interactions[exon]:
                 if iexon in tmp:
@@ -346,16 +367,17 @@ def find_controls_exons_in_interaction(final_exons_interactions: Dict,
     return count
 
 
-def random_exons_ctrl(final_exons_interactions: Dict[str, List],
-                      sf_reg: Dict, number_exons_ctrl: str) -> float:
+# ############FIND THE PERCENTAGE OF CONTROL EXONS IN INTERACTION#############
+def interactions_ctrl(final_exons_interactions: Dict[str, List], sf_reg: Dict,
+                      number_exons_ctrl: str) -> tuple:
     """
     Allows to:
     - Generate a list of exons control of size identical to that of the
     SF studied according to its regulation (down or up). This list does not
     contain exons regulated by the SF and the regulation studied.
-    - This exons control list is randomly generated 3 times. For each time, we
-    determine the percentage of exons control in interaction with at least one
-    other exon control. Then we average the 3 percentages obtained.
+    - This exons control list is randomly generated 200 times. For each time,
+    we determine the percentage of exons control in interaction with at least
+    one other exon control. Then we average the 200 percentages obtained.
 
     :param final_exons_interactions: a dictionary with for each exon the
     complete list of exons with which it interacts, for all the datasets that
@@ -367,10 +389,12 @@ def random_exons_ctrl(final_exons_interactions: Dict[str, List],
     :param number_exons_ctrl: a str which is the concatenation of the sf_name,
     the regulation and the number of exons regulated by this SF according to
     the type of regulation, e.g: HNRNPC_down_2482, see
-    get_every_events_4_a_sl().
-    :return average_percent_ctrl: is the percentage of exons control in
+    get_every_events_4_a_sl()
+    :return rounded_average_percent_ctrl: is the percentage of exons control in
     interaction with at least one other exon control. This percentage is
-    calculated for the 3 exons control list, and then we average it.
+    calculated for the 200 exons control list, and then we average it.
+    :return list_percentage_ctrl: is a list with the 200 percentages, used to
+    calculate average_percent_ctrl.
     """
     list_exons = get_info_from_database(sqlite3.connect(Config.db_file),
                                         """SELECT id FROM cin_exon""")
@@ -382,34 +406,37 @@ def random_exons_ctrl(final_exons_interactions: Dict[str, List],
             list_exons.remove(elmt)
 
     list_percentage_ctrl = []
-    for _ in range(3):  # Put the number of iteration with function parameters
+    for _ in range(Config.draw_number):
+        print(_)
         list_exons_ctrl = random.choices(list_exons, k=number_exons_ctrl)
-        nb_exons_ctrl_int = find_controls_exons_in_interaction(
-            final_exons_interactions, list_exons_ctrl)
+        nb_exons_ctrl_int = find_exons_in_interaction(final_exons_interactions,
+                                                      list_exons_ctrl)
         percentage_ctrl = (nb_exons_ctrl_int / number_exons_ctrl) * 100
         rounded_percentage_ctrl = round(percentage_ctrl, 2)
         list_percentage_ctrl.append(rounded_percentage_ctrl)
 
     average_percent_ctrl = sum(list_percentage_ctrl) / \
         len(list_percentage_ctrl)
-    return average_percent_ctrl
+    rounded_average_percent_ctrl = round(average_percent_ctrl, 2)
+    return rounded_average_percent_ctrl, list_percentage_ctrl
 
 
-# ####KEPT INTERACTIONS FOR EXONS DOWN OR UP REGULATED BY THE SF STUDIED#####
-def kept_interest_exons_sf(final_exons_interactions: Dict, sf_reg: Dict,
-                           number_exons_sf: str) -> float:
+# ###############FIND THE PERCENTAGE OF SF EXONS IN INTERACTION################
+def interactions_sf(final_exons_interactions: Dict, sf_reg: Dict,
+                    number_exons_sf: str) -> float:
     """
-    - For each exon (down and in a second time up) regulated by the SF of 
-    interest, it allows to obtain the complete list of exons with which it 
-    interacts, for all the datasets that we have.
+    - For each exon (down and in a second time up) regulated by the SF of
+    interest, it allows to obtain the complete list of exons with which it
+    interacts, according to all the datasets that we have, see
+    find_exons_in_interaction().
     - Then for each exon (down and in a second time up) regulated by the SF of 
     interest, we look in the complete list of exons with which it interacts, 
     if at least one of the exons is also regulated by the same SF, in the same 
-    way.
+    way, see find_exons_in_interaction().
     - Finally, we determine the percentage of exons (down and in a second time
-    up) regulated by the SF of interest in interaction with at least one other 
+    up) regulated by the SF of interest in interaction with at least one other
     exon regulated by the same SF, in the same way.
-    
+
     :param final_exons_interactions: a dictionary with for each exon the
     complete list of exons with which it interacts, for all the datasets that
     we have, e.g: '4448_11': ['4448_20'], '4857_5': ['4878_1', '494_6'], see
@@ -417,10 +444,10 @@ def kept_interest_exons_sf(final_exons_interactions: Dict, sf_reg: Dict,
     :param sf_reg: a dictionary with a list of regulated exons depending on a
     splicing factor and its regulation, e.g: {'PTBP1_up': ['345_38', '681_2',
     '781_4', '1090_16', '1291_12']}, see get_every_events_4_a_sl().
-    :param number_exons_sf: a str which is the concatenation of the sf_name, 
-    the regulation and the number of exons regulated by this SF according to 
-    the type of regulation, e.g: HNRNPC_down_2482, 
-    see get_every_events_4_a_sl().
+    :param number_exons_sf: a str which is the concatenation of the sf_name,
+    the regulation and the number of exons regulated by this SF according to
+    the type of regulation, e.g: HNRNPC_down_2482, see
+    get_every_events_4_a_sl()
     :return rounded_percentage_sf: the percentage of exons (down and in a 
     second time up) regulated by the SF of interest in interaction with at 
     least one other exon regulated by the same SF, in the same way.
@@ -429,74 +456,84 @@ def kept_interest_exons_sf(final_exons_interactions: Dict, sf_reg: Dict,
     ... '3_1': ['2_1', '1_1'],
     ... '5_1': ['1_1', '6_1']}
     >>> list_exons_ctrl = {'SRSF1_down': ['1_1', '3_1', '5_1']}
-    >>> kept_interest_exons_sf(inter_dic, list_exons_ctrl, 'SRSF1_down_3')
+    >>> interactions_sf(inter_dic, list_exons_ctrl, 'SRSF1_down_3')
     100.0
     >>> inter_dic = {'1_1': ['2_1', '3_1'],
     ... '3_1': ['2_1', '1_1'],
     ... '5_1': ['96_7', '6_1']}
     >>> list_exons_ctrl = {'SRSF1_down': ['1_1', '3_1', '5_1']}
-    >>> kept_interest_exons_sf(inter_dic, list_exons_ctrl, 'SRSF1_down_3')
+    >>> interactions_sf(inter_dic, list_exons_ctrl, 'SRSF1_down_3')
     66.67
     >>> inter_dic = {'1_1': ['2_1', '3_1'],
     ... '3_1': ['2_1', '14_18'],
     ... '5_1': ['96_7', '6_1']}
     >>> list_exons_ctrl = {'SRSF1_down': ['1_1', '3_1', '5_1']}
-    >>> kept_interest_exons_sf(inter_dic, list_exons_ctrl, 'SRSF1_down_3')
+    >>> interactions_sf(inter_dic, list_exons_ctrl, 'SRSF1_down_3')
     33.33
     """
-    nb_exons_sf_int = \
-        find_controls_exons_in_interaction(final_exons_interactions,
-                                           sf_reg[list(sf_reg.keys())[0]])
+    nb_exons_sf_int = find_exons_in_interaction(final_exons_interactions,
+                                                sf_reg[list(sf_reg.keys())[0]])
     number_exons_sf = int(number_exons_sf.split("_")[-1])
     percentage_sf = (nb_exons_sf_int / number_exons_sf) * 100
     rounded_percentage_sf = round(percentage_sf, 2)
     return rounded_percentage_sf
 
 
-def launch_figures_creation():
+def launch_figures_creation(sf: str):
     """
     Main function to create figure, with:
     - the percentage of exons (down and up) regulated by the SF of interest in
     interaction with at least one other exon regulated by the same SF, in the
     same way.
     - the percentage of exons control in interaction with at least one other
-    exon control. This percentage is calculated for the 3 exons control list,
+    exon control. This percentage is calculated for the 200 exons control list,
     and then we average it. This manipulation is carried out twice, depending
     on the number of down and up regulated exons.
-
     """
+    print(sf)
+    print(datetime.now())
     final_exons_interactions = get_every_exons_in_interaction()
 
     # SF_DOWN
     sf_reg_do, number_exons_do = get_every_events_4_a_sl(sqlite3.connect(
-        Config.db_file), SF, "down")
-    rounded_percentage_sf_do = kept_interest_exons_sf(final_exons_interactions,
-                                                      sf_reg_do,
-                                                      number_exons_do)
+        Config.db_file), sf, "down")
+    rounded_percent_sf_do = interactions_sf(final_exons_interactions,
+                                            sf_reg_do,
+                                            number_exons_do)
     # CTRL_DOWN
-    average_percent_ctrl_do = random_exons_ctrl(final_exons_interactions,
-                                                sf_reg_do, number_exons_do)
+    average_percent_ctrl_do, list_percent_ctrl_do = interactions_ctrl(
+        final_exons_interactions, sf_reg_do, number_exons_do)
 
     # SF_UP
     sf_reg_up, number_exons_up = get_every_events_4_a_sl(sqlite3.connect(
-        Config.db_file), SF, "up")
-    rounded_percentage_sf_up = kept_interest_exons_sf(final_exons_interactions,
-                                                      sf_reg_up,
-                                                      number_exons_up)
+        Config.db_file), sf, "up")
+    rounded_percent_sf_up = interactions_sf(final_exons_interactions,
+                                            sf_reg_up,
+                                            number_exons_up)
     # CTRL_UP
-    average_percent_ctrl_up = random_exons_ctrl(final_exons_interactions,
-                                                sf_reg_up, number_exons_up)
+    average_percent_ctrl_up, list_percent_ctrl_up = interactions_ctrl(
+        final_exons_interactions, sf_reg_up, number_exons_up)
 
     # CREATE FIGURE
-    df = pd.DataFrame({"A": [f"{SF}_down", "Control_down", f"{SF}_up",
-                             "Control_up"],
-                       "B": [rounded_percentage_sf_do, average_percent_ctrl_do,
-                             rounded_percentage_sf_up,
-                             average_percent_ctrl_up]})
-    data = sns.barplot(data=df, x="A", y="B", palette=["blue", "black",
-                                                       "red", "grey"])
-    fig = data.get_figure()
-    fig.savefig('/home/audrey/Figures_test/Figure_1.png')
+    data = {"Exons groups": [f"{sf} down"] + ["Control down"] * len(
+        list_percent_ctrl_do) + [f"{sf} up"] + ["Control up"] * len(
+        list_percent_ctrl_up),
+            "Interacting exons (%)":
+            [rounded_percent_sf_do] + list_percent_ctrl_do +
+            [rounded_percent_sf_up] + list_percent_ctrl_up}
+    df = pd.DataFrame(data)
+
+    sns.barplot(data=df, x="Exons groups", y="Interacting exons (%)",
+                palette=["blue", "grey", "red", "silver"],
+                estimator=mean, ci="sd")
+    plt.title(f"{sf} - All ChIA-PET datasets")
+
+    Config.figures_all_chia_pet_datasets.mkdir(exist_ok=True, parents=True)
+    plt.savefig(Config.figures_all_chia_pet_datasets /
+                f"{sf}_all_chia_pet_datasets.png")
+    plt.clf()
+    plt.close()
+    print(datetime.now())
 
 
 if __name__ == "__main__":