R: mettre à jour un graphique dynamiquement [fermé]

9

C'est une question de visualisation des données. J'ai une base de données qui contient des données qui sont constamment révisées (mise à jour en ligne). Quelle est la meilleure façon dans R de mettre à jour un graphique toutes les disons 5 ou 10 secondes. (sans tracer à nouveau tout est possible)?

rouge

RockScience
la source

Réponses:

7

En supposant que vous souhaitez mettre à jour R windows()ou un x11()graphique, vous pouvez utiliser des fonctions comme points()et lines()pour ajouter de nouveaux points ou étendre des lignes sur un graphique sans redessiner; notez cependant que cela ne changera pas la plage des axes pour tenir compte des points qui peuvent sortir de la vue. En général, c'est généralement une bonne idée de rendre le tracé lui-même instantané - par exemple en déplaçant l'effort de calcul pour créer une représentation moyenne réduite qui peut être tracée rapidement, comme une carte de densité au lieu d'un grand nombre de points ou en réduisant la résolution des tracés linéaires ( cela peut être complexe cependant).

Pour maintenir la session R pendant un certain temps sans attente, utilisez Sys.sleep().


la source
(+1) J'ai oublié la Sys.sleep()fonction. Je pense que la plage des axes et doit être établie à l'avance, non? yxy
chl
@chl, oui, les plages des axes et doivent être définies à l'avance. xy
mpiktas
1
@mpiktas Ou lancez simplement l'intrigue avec un seul appel à plot(), peut-être avec 0,0,type="n"s'il n'y a encore rien à tracer ... En effet, c'est beaucoup plus facile que de ding plot.new()et d'ajouter toutes les choses comme des axes ou des étiquettes à la main.
En effet cela semble le plus simple ... mais dommage que les axes ne soient pas mis à jour. Comme je veux mettre à jour en ligne une série chronologique, et je sais à quelle vitesse l'axe x se déplace, je suppose que je peux tout replacer toutes les n mises à jour.
RockScience
8

Pour une visualisation hors ligne, vous pouvez générer des fichiers PNG et les convertir en un GIF animé à l'aide d' ImageMagick . Je l'ai utilisé pour la démonstration (cela redessine toutes les données, cependant):

source(url("http://aliquote.org/pub/spin_plot.R"))
dd <- replicate(3, rnorm(100))
spin.plot(dd)

Cela génère plusieurs fichiers PNG, préfixés de fig. Ensuite, sur un shell un * x,

convert -delay 20 -loop 0 fig*.png sequence.gif

donne cette animation (qui est inspirée des méthodes biostatistiques appliquées modernes utilisant S-Plus , S. Selvin, 1998):

texte alternatif

Une autre option qui semble beaucoup plus prometteuse est de s'appuyer sur le package d' animation . Il y a un exemple avec une régression automatique de fenêtre mobile qui devrait vous permettre de commencer.

chl
la source