IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Matplotlib segment invisibles


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juin 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 89
    Par défaut Matplotlib segment invisibles
    Bonjour,
    Sur mon bout de code, je n'arrive pas à avoir les segments (lignes) entre les points du tracé. J'ai les points, mais les lignes n'apparaissent pas:

    Nom : Screenshot_2020-11-30_22-57-57.png
Affichages : 99
Taille : 32,5 Ko

    Voici une version "deconnectée" du script qui a le même problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    import matplotlib.pyplot as plt
    #import pywemo
    from matplotlib import style
    from datetime import datetime
    import logging
    from logging.handlers import RotatingFileHandler
    import os
     
    def my_mkdir(dir_name):
        if not os.path.isdir(dir_name):
            os.makedirs(dir_name)
     
     
    log_date = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    log_file = 'logfile_' + log_date + '.txt'
    if not (os.path.exists('output')):
        my_mkdir('output')
     
    # file logger and console initialisation
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s,%(message)s')
    my_path = os.getcwd() + os.sep + 'output' + os.sep + log_file
    file_handler = RotatingFileHandler(my_path, 'a', 10000000, 1)
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(logging.DEBUG)
    logger.addHandler(stream_handler)
     
     
     
    style.use('fivethirtyeight')
    #plt.axis([0, 10, 0, 1000])
     
    plt.autoscale(enable=True, axis='both')
    wemo_ip_address = "192.168.1.34"
    wemourl = 'http://%s:%i/setup.xml' % (wemo_ip_address, 49153)
     
     
    for i in range(10):
        #wemo_device = pywemo.discovery.device_from_description(wemourl, None)
        #plug_pwr = (round(wemo_device.current_power / 1000))
        plug_pwr = 20
        logger.info(str(plug_pwr))
     
        plt.plot(i, plug_pwr, marker='o', color='red')
        plt.pause(0.1)
     
    plt.show()

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    C'est normal, tu as une boucle qui trace des points en effaçant à chaque fois le point précédent.
    Tu peux faire cela à la fin (ou un truc qui y ressemble) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    y=[]
    for i in range(10):
        #wemo_device = pywemo.discovery.device_from_description(wemourl, None)
        #plug_pwr = (round(wemo_device.current_power / 1000))
        plug_pwr = 20
        logger.info(str(plug_pwr))
        y.append(plug_pwr)
     
        plt.plot(i, plug_pwr, 'ro')
        plt.pause(0.1)
    x = [i for i in range(10)] 
    plt.plot(x,y,'b-')
    plt.show()

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juin 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 89
    Par défaut
    Merci, mais j'aimerais que cela se fasse en live, car pour l'exemple j'ai mis 10 points mais en vrai j'en utilise 10000 et la courbe evolue sur plusieurs heures.

    Dans ton code, je ne vois pas à quoi correspond 'y', plug_pwr?

  4. #4
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Plus simplement, à chaque boucle, tu effaces le point d'avant, donc tu ne peux pas relier l'actuel avec le précédent : il faut trouver le moyen de le garder un tour de plus.

Discussions similaires

  1. Matplotlib: erreur Segmentation fault
    Par L1011 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 11/05/2011, 16h38
  2. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  3. [TASM] Déclarer le segment de pile
    Par cipher dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 01/10/2002, 03h58
  4. angle entre 2 segments
    Par tane dans le forum Mathématiques
    Réponses: 4
    Dernier message: 25/09/2002, 16h47
  5. Réponses: 8
    Dernier message: 05/06/2002, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo