2013-06-07 12 views
5

Sto provando a tracciare un LineChart utilizzando DefaultCategoryDataset e il problema che sto affrontando è, quando provo a tracciare un valore nullo tra due valori o la connessione tra i due punti è perso (cioè la linea che collega i due punti non appare), altrimenti devo saltare il valore nullo (eseguendo un controllo Null su ogni punto in DataSet) per collegare gli altri due punti, che risulta nell'asse x punto che non viene tracciato sul mio grafico.Evitare null nel set di dati per il grafico a linee

Ad esempio: se devo Unit1, Unit2, Unit3 sull'asse x e alcuni valori, dire 10, 20, 30 per ciascuna, esso funziona bene e trame una linea inclinata. Ma invece di 20 in Unità2, se imposto null, ottengo solo due punti sul mio grafico senza una linea che collega questi due punti.

Per ottenere la linea tracciata, devo saltare il punto Unità2 dal mio asse x. Ma quello che voglio fare è connettere l'Unità1 all'unità3 senza saltare l'Unità2 (e il suo valore rimane nullo), non voglio tracciare invece di null.

C'è un modo per farlo?

risposta

1

È possibile utilizzare due set di dati quasi identici ma due renderer.

Il primo set di dati deve contenere tutti i dati compresi i valori null. Configura un renderer per questo set di dati per disegnare solo forme (ma nessuna linea). Finirai con una forma per ogni punto di dati che non è `null.

Il secondo set di dati deve contenere solo dati che non sono null. Configura un altro renderer per questo set di dati per disegnare solo linee (ma nessuna forma). Otterrai una riga che salta semplicemente il punto zero, ma è continua.

codice per questo potrebbe essere simile a questo:

// create your chart here... 

// configure first renderer 
LineAndShapeRenderer renderer = LineAndShapeRenderer) plot.getRenderer(); 
renderer.setBaseShapesVisible(true); 
renderer.setBaseLinesVisible(false); 

// configure second renderer 
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer(true, false); 
plot.setDataset(1, dataset2); 
plot.setRenderer(1, renderer2); 

hth,
- Martin

+0

Questa non è una buona soluzione se si desidera utilizzare la legenda per il grafico. Quindi mostrerà un oggetto leggenda per ciascuna delle due linee. – searchengine27