Créer une fonction avec matplotlib

Fermé
Xoris - 16 avril 2022 à 19:40
yg_be Messages postés 23315 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 - 19 avril 2022 à 11:23
Bonjour,

J'envoie un appel à l'aide car je bloque depuis un moment...

Je dois créer plusieurs fonction pour voir le nombre d'élément parcourue par rapport au temps et les comparés selon la méthode de triage utilisé ainsi que les fichiers.

Je dois utilisé numpy pour le triage et pandas pour les résultats.
le graphique sera réalisé à l'aide de matplotlib.

Le problème que je rencontre est que je souhaite faire un graphique avec mon nombre d'éléments par rapport au temps. Les éléments sont en 2 dimensions du fait que se soit dans un tableau et mon temps en 1 dimension car je ne possède que le temps qu'il a pris à faire le triage.

Pour le coup, je bloque car je ne sais pas comment m'y prendre pour le réaliser.

J'ai mis mon code commenté afin que vous puissiez y voir plus clair.

J'espère que quelqu'un sera m'aider pour mon problème et je vous souhaite à tous une bonne soirée.


#importation de bibliothèque
import pandas as pd
import numpy as np
import matplotlib
import time
import matplotlib.pyplot as plt
#génération de 3 fichiers différents


#trier par ordre croissant
dc = pd.DataFrame(np.sort(np.random.randint(1,50,2000)))

#ordre aléatoire
da = pd.DataFrame(np.random.randint(1,50,2000))

#ordre décroissant
dd = pd.DataFrame(np.sort(np.random.randint(1,50,2000))[::-1])

#sauvegarde dans les fichiers
dc.to_csv('fichier1.csv', index=False)
da.to_csv('fichier2.csv', index=False)
dd.to_csv('fichier3.csv', index=False)

#temps pris pour le triage
start = time.time()
B = np.sort(dc, axis=-1, kind='quicksort')
end = time.time()
print(B)
tpp = end-start


#Faire un graphique avec le nombre d'élément parcourue sur le temps
print(tpp)
plt.plot(B,tpp)
plt.show()



Configuration: Windows / Chrome 100.0.4896.127
A voir également:

4 réponses

yg_be Messages postés 23315 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 Ambassadeur 1 552
16 avril 2022 à 20:37
bonjour,
merci de préciser le langage quand tu utilises les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

ton code fonctionne bien et ne fait pas exactement ce que tu souhaites?
en quoi dévie-t-il du résultat attendu?
0
Merci de m'avoir répondu, hélas je ne sais pas modifié mon post pour je ne sais quel raison :/

mon code fonctionne jusqu'a la fonction matplotlib qui me donne un message d'erreur qui est le suivant:

[[ 1]
[ 1]
[ 1]
...
[49]
[49]
[49]]
0.000997304916381836
Traceback (most recent call last):
File "C:\Users\Xoris\Desktop\0000\main.py", line 34, in <module>
plt.plot(B,tpp)
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\pyplot.py", line 2757, in plot
return gca().plot(
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\axes\_axes.py", line 1632, in plot
lines = [*self._get_lines(*args, data=data, **kwargs)]
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\axes\_base.py", line 312, in __call__
yield from self._plot_args(this, kwargs)
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\axes\_base.py", line 498, in _plot_args
raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (2000, 1) and (1,)

Process finished with exit code 1

Pour le coup, je comprends pas pourquoi je n'arrive pas à créer un graphique, il parle de dimension différente...
0
Gandalf58 Messages postés 2 Date d'inscription samedi 13 mars 2021 Statut Membre Dernière intervention 7 mai 2022
17 avril 2022 à 10:27
Je ne comprends pas où tu veux en arriver. Peux-tu nous faire un dessin commenté ?
0
Merci pour ta réponse,
Je souhaite réaliser un graphique à l'aide de matplotlib avec comme parametre le temps et le nombre d'élément parcourue (lors du triage) mais lorsque j'essaie de faire un graphique avec la fonction plt.plot(B,tpp)
B = triage effectuer (quicksort)
tpp= temps pris pour faire le triage
J'obtiens un message d'erreur qui est le suivant: [[ 1]
[ 1]
[ 1]
...
[49]
[49]
[49]]
0.000997304916381836
Traceback (most recent call last):
File "C:\Users\Xoris\Desktop\0000\main.py", line 34, in <module>
plt.plot(B,tpp)
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\pyplot.py", line 2757, in plot
return gca().plot(
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\axes\_axes.py", line 1632, in plot
lines = [*self._get_lines(*args, data=data, **kwargs)]
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\axes\_base.py", line 312, in __call__
yield from self._plot_args(this, kwargs)
File "C:\Users\Xoris\anaconda3\envs\0000\lib\site-packages\matplotlib\axes\_base.py", line 498, in _plot_args
raise ValueError(f"x and y must have same first dimension, but "
ValueError: x and y must have same first dimension, but have shapes (2000, 1) and (1,)

Process finished with exit code 1
0
yg_be Messages postés 23315 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 1 552
17 avril 2022 à 19:00
Je pense que tu n'as pas compris l'énoncé de ton exercice.
0
Gandalf58 Messages postés 2 Date d'inscription samedi 13 mars 2021 Statut Membre Dernière intervention 7 mai 2022
19 avril 2022 à 10:43
Je te propose de faire un dessin à la main levée sur un bout de papier, ton objectif final. Tu en fais une photo
0
yg_be Messages postés 23315 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 1 552
19 avril 2022 à 11:23
Son premier problème, c'est qu'il ne sait pas quelles données il doit utiliser pour faire son graphique.
0