J'ai des données de séries chronologiques (signal) de longueur différente que je voudrais tracer sans aucune marge entre l'échelle et le signal. Objectif: tracer chaque signal afin que l'impression (physique) du tracé montre chaque point de données. L'intrigue doit être enregistrée dans un fichier.Python/matplotlib: impression en résolution et sans espace/bordures/marges
Vu:
- imprimante 600 dpi résolution d'impression maximale.
- signaux avec un nombre différent de points de données (de 30000 à 100000).
exemple de signal:
import numpy as np
Fs = 512
# Create random signal
np.random.seed(1)
data = [np.random.uniform(-10000, 20000) for i in range(5*Fs)]
Si je conspire juste avec matplotlib:
import matplotlib.pyplot as plt
plt.figure(figsize=(len(data)/600,2)) # divide by 600 which is dpi resolution of printer
plt.plot(data, color = "black", linewidth = 1.0)
plt.show()
Je ne veux pas d'espace blanc entre le premier point de données et l'axe Y ou entre le dernier point de données et la bordure droite. L'étiquette de l'axe Y ne doit pas non plus interférer avec la taille de l'intrigue, donc sa largeur doit également être prise en compte.
Comment puis-je obtenir que chaque point soit imprimé?
Pour enlever l'espace blanc serti 'plt.xlim ([...])' et 'plt.ylim ([...])' correspondre exactement vos données. Si vous voulez vraiment que chaque point soit imprimé, vous devez probablement sauvegarder l'intrigue dans un format vectoriel, puis imprimer suffisamment grand. D'abord, je ne vois pas vraiment pourquoi tu voudrais ça. Deuxièmement, je ne pense pas que vous pouvez être sûr, le pilote de votre imprimante et son logiciel peuvent également influencer ce qui est réellement imprimé. –
Comme une alternative au commentaire ci-dessus, 'plt.margins (0,0)' pour supprimer les marges automatiques – DavidG
Je ne suis pas sûr si 'margins' résout ce problème (probablement seulement une partie de celui-ci). D'un autre côté, c'est totalement flou ce que signifie "imprimer chaque point" si vous avez 100000 points. Si vous avez 100000 points divisés 600 dpi = 166 pouces = 4.20 mètres. Il n'y a pas de papier qui mesure 4 mètres. Donc, dans ce sens, je pense toujours que cette question ne répond pas. – ImportanceOfBeingErnest