2013-09-04 20 views
5

Używam achartengine dla danych, które moja aplikacja ciągle otrzymuje przez połączenie z gniazdem. Punkt narysowany jest względem czasu, który jest moją osią x. Po umieszczeniu wykresu użytkownik może przesuwać i powiększać wykres. Wszystko jest gładkie jak maślanka. Jedynym problemem jest to, że gdy użytkownik powiększy wykres, części wykresu są również widoczne po drugiej stronie osi X i Y.Wykres widoczny poza osiami X i Y

Jak ograniczyć wyświetlanie wykresu poza osiami X i Y?

Oto część mojego kodu.

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

Jakiej wersji AChartEngine używasz? –

+0

Używam wersji 1.1.0 – Umesh

+0

Czy pobrałeś ją stąd: http://code.google.com/p/achartengine/downloads/list? –

Odpowiedz

0

Miałem podobny wymóg. Rozwiązałem go, ustawiając mój zestaw danych na wartość maksymalną i minimalną. Oczywiście w moim przypadku zadziałało, ponieważ przetwarzałem dane, które otrzymałem z serwera przed umieszczeniem go w moim zestawie danych.

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

Czy zezwoliłeś na powiększanie aplikacji? Jeśli tak, to jak sobie z tym poradziłeś? –

+0

Nie. Mam wyłączone powiększanie – curioustechizen

+0

Dziękuję za odpowiedź, ale pytanie dotyczy w szczególności przesuwania/powiększania –