Besoin d'aide pour tracer plusieurs graphiques
Bonjour,
Je cherche à avoir une solution pour faire des affichages graphiques d'un sinusoïdal à différente échelle.
Lorsque j'exécute mon programme comme vous pouvez voir sur l'image j'ai une bonne sinusoïdale mais celle-ci disparaît dès le 2ème graphique.
Je sais qu'il faut agrandir le zoom pour pouvoir mieux le visualiser mais je cherche justement une relation de proportionnalité.
Pouvez-vous m'aider ?
import numpy as np import matplotlib.pyplot as plt import sounddevice as sd frequence = [20, 2240, 4460, 6680, 8900, 11120, 13340, 15560, 17780, 20000] durée = 2 A = 1 #amplitude fe = 44100 xmax = 0.2 #Tracé du signal fig, ax = plt.subplots(10, 1, figsize = (25, 25)) for i in range(len(frequence)) : pulsation = 2*np.pi* frequence[i] temps = np.arange(0, durée, 1/fe) sinus = A*np.sin(pulsation*temps) #affichage et délimitation ax[i].plot(temps ,sinus) ax[i].set_xlim([0,xmax]) xmax = xmax/2 #insertion des titres ax[i].set_title(("Emission d'un signal sinusoïdal à", frequence[i], "Hz")) ax[i].set_ylabel("Amplitude") ax[i].set_xlabel("Temps (en seconde)") ax[i].grid() plt.tight_layout() plt.show()
Windows / Opera 93.0.0.0
- Besoin d'aide pour tracer plusieurs graphiques
- Tracer un mail - Guide
- Tracer un colis - Guide
- Comment tracer une courbe sur excel - Guide
- Comment tracer un ordinateur volé - Guide
- Tracer courbe graphique en ligne - Guide
2 réponses
bonjour,
je ne vois rien de disparu dans le deuxième graphique.
qu'appelles-tu une relation de proportionnalité? qu'as-tu essayé?
Bonjour,
J'ai l'impression que le problème est "pourquoi la qualité du tracé des 2e et 3e sinusoïdes est dégradé".
Deux explications possibles :
- Le format d'image est non vectoriel (basé sur des pixels, comme pour png, bmp, jpg) et la résolution de l'image est trop faible pour que le rendu soit bon -- mais en l'occurrence, ça n'est pas le problème
- Les points passés à pyplot sont trop espacés (pyplot ne fait que tracer des segments entre les points qu'on lui passe) -- et c'est dans le cas l'explication de ton problème
Le pas de temps à utiliser (actuellement, dans le code : 1/fe) dépend plus de la largeur de l'image (en pixels) que de la fréquence du signal tracé. Alors certes, si la fréquence du signal est faible, tu peux te contenter d'un pas de temps assez important, mais dès que la fréquence devient importante, il faut échantillonner plus de points.
Pour te convaincre de ce que je dis, tu peux remplacer :
temps = np.arange(0, durée, 0.00001)
par :
temps = np.arange(0, durée, 0.00001)
... et le tracé sera de meilleure qualité.
Si au contraire tu prends un pas de temps beaucoup plus faible, par exemple :
temps = np.arange(0, durée, 0.0001)
... tu verras apparaître le phénomène dont je te parle.
Ensuite, libre à toi de prendre un pas de temps multiple de fe si tu le souhaites, mais il faut que cette valeur soit de l'ordre de 0.00001 avec les paramètre actuels.
Bonne chance