IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Description of Objects in VPython

Tracer des graphes

Dans cette section nous décrivons les caractéristiques pour tracer des graphes avec des marqueurs et étiquettes. Voici un exemple simple qui montre comment tracer un graphe:

from visual.graph import * # importation des fonctions de tracés

 

funct1 = gcurve(color=color.cyan) # une courbe connexe

 

for x in arange(0., 8.1, 0.1): # x va de 0 à 8

    funct1.plot(pos=(x,5.*cos(2.*x)*exp(-0.2*x))) # plot

Importer visual.graph rend disponible tous les objets Visual ainsi que le module pour tracer des graphes. Les graphes sont automatiquement redimensionnés pour afficher toutes les données dans la fenêtre.

Une courbe connexe (gcurve) n'est qu'un des nombreux tracés de graphes disponibles. Il y a d'autres options comme des points discontinus (gdots), des barres verticales (gvbars), des barres horizontales (ghbars), et des données rangées dans des casiers affichés comme des barres verticales (ghistogram; voir plus loin dans la discussion). Lors de la création d'un de ces objets, vous pouvez spécifier un attribut de couleur. Pour gvbars et ghbars, vous pouvez aussi spécifier un attribut delta, qui spécifie la largeur de la barre (la valeur par défaut est delta=1.).

Vous pouvez tracer plus d'une chose sur le même graphe:

funct1 = gcurve(color=color.cyan)

funct2 = gvbars(delta=0.05, color=color.blue)

for x in arange(0., 8.1, 0.1):

    funct1.plot(pos=(x,5.*cos(2.*x)*exp(-0.2*x))) # courbe

    funct2.plot(pos=(x,4.*cos(0.5*x)*exp(-0.1*x))) # vbars

Dans l'opération de traçage, vous pouvez spécifier une couleur différente pour outrepasser le réglage original:

mydots.plot(pos=(x1,y1), color=color.green)

Quand vous créez un objet gcurve, gdots, gvbars, ou ghbars, vous pouvez fournir une liste de points à tracer, comme c'est le cas avec l'objet ordinaire curve:

points = [(1,2), (3,4), (-5,2), (-5,-3)]

data = gdots(pos=points, color=color.blue)

Cette option de liste est disponible seulement lors de la création de l'objet gdots.

 

Options générales de gdisplay

Vous pouvez établir un gdisplay pour définir la taille, position et le titre de la barre de titre de la fenêtre graphique, spécifier les noms des axes x et y, et spécifier les valeurs maximales pour chaque axe, avant la création d'un objet gcurve ou d'un autre objet de tracés de graphes:

graph1 = gdisplay(x=0, y=0, width=600, height=150,

          title='N vs. t', xtitle='t', ytitle='N',

          xmax=50., xmin=-20., ymax=5E3, ymin=-2E3,

          foreground=color.black, background=color.white)

Dans cet exemple, la fenêtre graphique sera localisée à la position (0,0), avec une taille de 600 pixels par 150 pixels et il y aura 'N vs. t' dans la barre de titre. L'axe horizontal aura le titre 't' et l'axe vertical le titre 'N'. Au lieu d'un redimensionnement automatique du graphe pour afficher toutes les données, le graphe aura des limites fixées. L'axe horizontal s'étendra de -20. à +50., et l'axe vertical s'étendra de -2000. à +5000. (xmin et ymin devront être négatifs; xmax et ymax devront être positifs.) La couleur du premier plan (le blanc par défaut) est le noir et la couleur d'arrière plan (noir par défaut) est le blanc. Si vous exécutez simplement gdisplay(), les valeurs par défaut sont x=0, y=0, width=800, height=400, aucun titre, redimensionnées automatiquement.

Chaque gdisplay possède l'attribut display, si bien que vous pouvez manipuler les aspects basiques d'affichage d'une fenêtre graphique:

graph1.display.visible = 0 # rend l'affichage invisible

Vous pouvez avoir plus d'une fenêtre graphique: créez simplement un autre gdisplay. Par défaut, chaque objet graphique créé selon un gdisplay appartient à cette fenêtre. Vous pouvez alors spécifier à quelle fenêtre appartient le nouvel objet:

energy = gdots(gdisplay=graph1, color=color.blue)

 

Histogrammes (données triées rangées dans des casiers)

Le but de ghistogram est de trier des données dans des casiers et d'afficher la distribution. On suppose que vous avez une liste d'âges d'un groupe de personnes, tel que [5, 37, 12, 21, 8, 63, 52, 75, 7]. Vous voulez trier ces données dans des tranches de 20 ans et afficher les nombres de chaque tranche sous la forme de barres verticales. La première tranche (0 à 20) contiendra 4 personnes [5, 12, 8, 7], la deuxième tranche (20 à 40) contiendra 2 personnes [21, 37], la troisième tranche (40 à 60) contiendra 1 personne [52], et la quatrième tranche (60 à 80) contiendra 2 personnes [63, 75]. Voici comment vous pourriez faire cet affichage:

from visual.graph import *

.....

agelist1 = [5, 37, 12, 21, 8, 63, 52, 75, 7]

ages = ghistogram(bins=arange(0, 80, 20), color=color.red)

ages.plot(data=agelist1) # plot the age distribution

.....

ages.plot(data=agelist2) # plot a different distribution

Vous spécifiez une liste (casiers) dans laquelle les données vont être triées. Dans l'exemple donné ici, les casiers vont de 0 à 80 par tranche de 20. Par défaut, si vous exécutez plus tard

ages.plot(data=agelist2)

la nouvelle distribution remplace l'ancienne. D'un autre côté, si vous exécutez

ages.plot(data=agelist2, accumulate=1)

les nouvelles données seront ajoutées aux anciennes.

Si vous exécutez la suite,

ghistogram(bins=arange(0,50,0.1), accumulate=1, average=1)

chaque opération accumulera les données et calculera la moyenne des données accumulées. Par défaut, il n'y a aucune accumulation et aucun calcul de la moyenne.

 

gdisplay contre display

Une fenêtre gdisplay est étroitement liée à une fenêtre display. La principale différence est qu'un gdisplay est essentiellement bidimensionnel et a des facteurs d'échelle en x et y non-uniformes. Lorsque vous créez un gdisplay (explicitement ou implicitement avec l'objet gcurve ou un autre objet graphique), l'affichage courant est sauvé et restauré, si bien que la création plus loin d'un objet ordinaire Visual tel que la sphère ou la boîte sera correctement associée avec le précédent affichage, et non plus avec le récent gdisplay.

 

Copyright © 2006 Guillaume et Yoann Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.