2016-06-01 2 views
2

J'essaye de créer un graphique en temps réel dans une raquette. J'ai regardé les librairies Plot et GUI, et il me semble qu'il me manque quelque chose. Lorsque vous appelez plot, il renvoie un snip d'image% ou un certain nombre d'autres formats d'image. Mais je n'arrive pas à trouver un moyen d'ajouter ou de supprimer des points du graphique sans rappeler l'intrigue. Maintenant, je suppose que je pourrais utiliser une méthode commeRaquette Tracé en temps réel/Graphique

https://planet.racket-lang.org/package-source/williams/animated-canvas.plt/2/5/planet-docs/animated-canvas/index.html

mais je dois ré-écrire tous les mécanismes de manipulation qui viennent avec le snip%. Maintenant, il se peut que je doive le faire de toute façon, mais ce que je demande, c'est s'il existe des mécanismes qui vous permettent de manipuler le graphique et les données d'un snip de% après sa création, ou dois-je juste le redessiner manuellement chaque fois que je veux changer à quoi il ressemble? Y a-t-il également du travail qui a été fait pour créer des graphiques en temps réel dans Racket en général?

Répondre

0

Après avoir creusé dans Rackets POO et bibliothèques graphiques, je suis finalement venu sur (et compris) parcelle/dc laquelle la demande de documents peut être utilisé pour de telles applications: https://docs.racket-lang.org/plot/plotting.html?q=plot%2Fdc#%28def._%28%28lib._plot%2Fmain..rkt%29._plot%2Fdc%29%29

Il semble fonctionner mieux que la toile animée lors du rendu , mais je devrai encore réimplémenter le zoom et le clic et tout ce qui vient avec snip% s, à moins que quelqu'un ait de meilleures idées.

#lang racket 

(require racket/gui plot racket/draw) 

(define num 0) 

(define f (new frame% [label "Test graph"] 
       [width 200] 
       [height 200])) 
(define c (new canvas% [parent f])) 


(send f show #t) 

(define (loop) 
    (set! num (add1 num)) 
    (plot/dc (function sin (- pi) num) 
      (send c get-dc) 
      0 0 
      (- (send f get-width) 40) ;; figure out how to get the actual size of the text outside the graphs boarder? 
      (- (send f get-height) 40) 
      #:title "Graph" 
      #:x-label "num" 
      #:y-label "sin" 
      ) 
    (sleep/yield .2) 
    (loop)) 

(loop)