Grafico combinato in tempo reale JfreeChart - Rendi il valore precedente per un sottochart a fase se non è stato ricevuto alcun punto dati

StackOverflow https://stackoverflow.com/questions/1153836

  •  18-09-2019
  •  | 
  •  

Domanda

Ho un diagramma combinato in JFREECHART composto da 4 grafici con un asse di dominio temporale comune.

I dati per le sottotrame arrivano a tariffe diverse. Ad esempio, potrei ricevere un evento di cambio di prezzo ogni paio di milisecondi e una modifica della posizione ogni minuto. Attualmente sto rendendo queste serie con XyStePrender per produrre grafici.

Mi piacerebbe poter fare qualcosa del genere:

  • Un prezzo viene ricevuto al tempo t ed è tracciato sul grafico
  • Non sono stati ricevuti dati al momento t per il grafico delle posizioni e quindi supponiamo che il valore non sia cambiato e che il valore di posizione precedente è reso, cioè estendendo la linea di step orizzontale in orizzontale
  • Al momento t+1 viene ricevuto un punto di posizione e viene tracciato modificando il grafico dei gradini
  • Al momento T+1 non è stato ricevuto alcun prezzo e quindi il prezzo precedente viene tracciato

C'è un modo semplice per farlo in JfreeChart? Attualmente ho un'implementazione funzionante, ma questo non gestisce il rendering dei valori ipotizzati.

I miei pensieri iniziali sono stati in merito a cambiare il modello di dati in modo da poter trovare rapidamente il valore precedente e modificare le chiamate per dire a ciascuna sottotrama da disegnare quando viene ricevuto un evento per qualsiasi trama.

È stato utile?

Soluzione

Penso che dovrai tamponare le modifiche in arrivo e applicare un set di regole per inoltrare le modifiche a JFreeChart (che non è davvero raccomandato per il lavoro in tempo reale a proposito, ma ho scoperto che per gli aggiornamenti a bassa frequenza funziona bene).

Immagino che tu abbia un set di dati per i prezzi e un set di dati per le posizioni. La tua posizione e gli aggiornamenti dei prezzi arrivano con un timestamp? In caso contrario, avrai il problema di riceverli in sequenza e provare a legarli (forse aggiornamenti che arrivano all'interno di una certa mappa di Timewindow allo stesso tempo?). Se hanno i timestamp, puoi derivare una nuova posizione (come la vecchia posizione) quando arriva il prezzo e quindi sostituirlo se necessario.

Vorrei disaccoppiarsi l'aggiornamento del grafico dalle aggiornamenti di posizione/prezzo qualunque cosa accada, nel caso in cui ti venga sommerso con variazioni di posizione/prezzo. Non vuoi che questo si traduca in più aggiornamenti del grafico che dovrai buttare via immediatamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top