Affichage de données d'un fichier.txt
J'ai trouvée une possible solution à la question.
Si cette réponse suffit, j'indiquerai que la question a été résolue.
Dans un projet en Java, on nous demande de réaliser trois méthodes utilisant ces tris : BubbleSort, QuickSort, CountingSort.
Ce sont trois tris connus en Algorithmie.
Ensuite on souhaite <u>connaître le temps d'exécution des méthodes.</u>
On récupère les données dans un fichier.txt de cette manière:
Nb_Element: TempsTriBulle; NB_OperationTB: TempsTriRapide; NB_OperationTR: TempsTriDenombrement: NB_OperationTD
<u>Exemple:</u>
44001: 9865.0; 2391444355: 24.0; 1186730: 2.0; 308307
<u>Maintenant, voici enfin la question :</u>
J'aimerai réaliser les Fonction (Graphiques) avec Python pour chaque Tris.
<u>En Abscisse :</u> Nb_Element
<u>En Ordonnée :</u> TempsTri
J'ai déjà récupérés mes données dans des dictionnaires de Listes.
chemin = "TempsFonction.txt"
Nb_Element = []
TriBulle = {"Temps": [], "NBOE": []}
TriRapide = {"Temps": [], "NBOE": []}
TriDenombrement = {"Temps": [], "NBOE": []}
Chaine = "QuelqueChose"
with open(chemin, "r") as Fichier:
Fichier.readlines(1)
while(True):
Chaine = Fichier.readlines(1)
if(len(Chaine) == 0):
break
#La dernière ligne du fichier est vide.
Chaine = Chaine[0].replace(": ","; ")
Chaine = Chaine.replace("\n","")
Liste = Chaine.split("; ")
Nb_Element.append(Liste[0])
TriBulle["Temps"].append(Liste[1])
TriBulle["NBOE"].append(Liste[2])
TriRapide["Temps"].append(Liste[3])
TriRapide["NBOE"].append(Liste[4])
TriDenombrement["Temps"].append(Liste[5])
TriDenombrement["NBOE"].append(Liste[6])
Du coup, comment faire pour afficher de manière visuelle les données de mes fichiers sous forme de fonctions ?
Merci pour votre Lecture et de votre future réponse :) !
<u>Édition 1:</u>
J'ai utilisé matplotilb, une bibliothèque de Python.
import matplotlib.pyplot as plt
# Ajouter les données aux tableaux pour les abscisses et les ordonnées
x = Nb_Element
y = TriBulle["Temps"]
# Tracer le graphique
plt.plot(x, y)
# Ajouter les étiquettes pour les axes
plt.xlabel("Nb_Element")
plt.ylabel("TempsTri")
# Ajouter un titre pour le graphique
plt.title("Tri BubbleSort")
# Afficher le graphique
plt.show()
Et je me prend un message d'erreur incompréhensible de mon vivant :
/usr/lib/python3/dist-packages/pandas/util/testing.py:28: FutureWarning: In the future `np.bool` will be defined as the corresponding NumPy scalar.
import pandas._libs.testing as _testing
Traceback (most recent call last):
File "/home/etudiant/dj222837/PycharmProjects/pythonProject/AfficherDonnées.py", line 41, in <module>
plt.plot(x, y)
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 2748, in plot
return gca().plot(
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 2245, in gca
return gcf().gca()
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 842, in gcf
return figure()
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/_api/deprecation.py", line 454, in wrapper
return func(*args, **kwargs)
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 783, in figure
manager = new_figure_manager(
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 358, in new_figure_manager
_warn_if_gui_out_of_main_thread()
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 336, in _warn_if_gui_out_of_main_thread
if _get_required_interactive_framework(_get_backend_mod()):
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 207, in _get_backend_mod
switch_backend(dict.__getitem__(rcParams, "backend"))
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 265, in switch_backend
backend_mod = importlib.import_module(
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 848, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/snap/pycharm-professional/319/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py", line 11, in <module>
from datalore.display import debug, display, SHOW_DEBUG_INFO
File "/snap/pycharm-professional/319/plugins/python/helpers/pycharm_display/datalore/display/__init__.py", line 1, in <module>
from .display_ import *
File "/snap/pycharm-professional/319/plugins/python/helpers/pycharm_display/datalore/display/display_.py", line 7, in <module>
from .supported_data_type import _standardize_value
File "/snap/pycharm-professional/319/plugins/python/helpers/pycharm_display/datalore/display/supported_data_type.py", line 11, in <module>
import pandas
File "/usr/lib/python3/dist-packages/pandas/__init__.py", line 182, in <module>
import pandas.testing
File "/usr/lib/python3/dist-packages/pandas/testing.py", line 7, in <module>
from pandas.util.testing import (
File "/usr/lib/python3/dist-packages/pandas/util/testing.py", line 28, in <module>
import pandas._libs.testing as _testing
File "pandas/_libs/testing.pyx", line 10, in init pandas._libs.testing
File "/home/etudiant/dj222837/.local/lib/python3.8/site-packages/numpy/__init__.py", line 305, in __getattr__
raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'bool'.
`np.bool` was a deprecated alias for the builtin `bool`. To avoid this error in existing code, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
Salut Jérémy,
peux tu afficher x et y ? je soupçonne un problème de format. Sinon je te propose cette solution avec pandas pour lire le fichier et le matplotlib qui va bien. Je me suis permis de créer un faux fichier pour illustrer.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("TempsFonction.txt", sep=";")
data = {}
for column in df.columns:
# on coupe le header de colonne séparé par : et on ne prend pas l'espace juste après
alg = column.split(":")[1:][0][1:]
data[alg] = {"NB_Element": df[column].apply(lambda elem: elem.split(":")[0]).values,
"TempsTri": df[column].apply(lambda elem: elem.split(":")[1]).values}
for key,values in data.items():
plt.plot(values['NB_Element'], values['TempsTri'], label=key)
plt.legend()
plt.show()
En gros le apply permet d'appliquer une fonction à chaque élément d'une colonne. Dis moi si tu ne connais pas du tout cette fonction et que tu veux en savoir plus.
Ici mon faux fichier pour l'exemple:
# TempsFonction.txt
Nb_Element: TempsTriBulle; NB_OperationTB: TempsTriRapide
0: 0;0: 0
1: 1; 1: 1
2: 2; 2: 4
3: 3; 3: 9
4: 4; 4: 16
5: 5; 5: 25
6: 6; 6: 36
7: 7; 7: 49
Et le résultat
A ta disposition si ce n'est pas clair. C'est un bon exercice et je le referai ce soir en mentorat si tu es là.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte