2013-09-04 31 views
5

Sto utilizzando achartengine per i dati che la mia applicazione riceve continuamente tramite una connessione socket. Il punto è tracciato contro il tempo che è il mio asse x. Una volta posizionato il grafico, un utente può eseguire una panoramica e uno zoom sul grafico. Tutto è burroso liscio. L'unico problema è che quando l'utente ingrandisce il grafico, parti del grafico sono visibili anche sull'altro lato dell'asse xe y.Grafico visibile all'esterno dell'asse X e Y

Come limitare il grafico all'essere visibile all'esterno degli assi X e Y?

Ecco una parte del mio codice.

XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 

renderer.setChartTitleTextSize(12); 
renderer.setLabelsTextSize(15); 
renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01)); 
renderer.setApplyBackgroundColor(true); 
renderer.setBackgroundColor(Color.TRANSPARENT); 
renderer.setZoomEnabled(true, true); 
    renderer.setPointSize(5f); 
renderer.setShowGrid(true); 
renderer.setXTitle(xTitle); 
renderer.setYTitle(yTitle); 
renderer.setLabelsColor(getResources().getColor(R.color.black)); 
renderer.setXLabelsColor(getResources().getColor(R.color.black)); 
renderer.setYLabelsColor(0, getResources().getColor(R.color.black)); 
renderer.setDisplayValues(true); 
renderer.setSelectableBuffer(20); 
renderer.setShowLegend(false); 

    renderer.setRange(new double[] { timeSeriesChart.getMinX(), 
      timeSeriesChart.getMaxX(), 0/* minY */, maxY }); 

    renderer.setPanLimits(getChartLimit(
    isTimeChart, timeSeriesChart.getMinX(), timeSeriesChart.getMaxX(), 
    (maxY*-1)+timeSeriesChart.getMinY(), 
    maxY)); 

enter image description here

+0

Quale versione di AChartEngine si utilizza? –

+0

Sto usando la versione 1.1.0 – Umesh

+0

L'hai scaricato da qui: http://code.google.com/p/achartengine/downloads/list? –

risposta

0

ho avuto un requisito analogo. L'ho risolto bloccando il set di dati su un valore massimo e minimo. Ovviamente nel mio caso ha funzionato perché stavo trasformando i dati ricevuti da un server prima di inserirli nel mio set di dati.

TimeSeries mTimeSeries; 

... 
... 

private void addValue(Date time, double val){ 
    if(val >= MAX_VALUE){ 
     val = MAX_VALUE; 
    } 
    if(val <= MIN_VALUE){ 
     val = MIN_VALUE; 
    } 

    mTimeSeries.add(time, val); 
} 
+0

Hai permesso lo zoom nella tua applicazione? Se sì, come hai gestito? –

+0

No. Ho disabilitato lo zoom – curioustechizen

+0

Grazie per la risposta, ma la domanda si riferisce specificamente al panning/zoom –

Problemi correlati