2016-06-15 3 views
0

저는 aChartEngine을 사용하여 일부 barchart를 생성했습니다. 하나의 활동 안에 9 개의 서로 다른 바카르트가 있습니다. 내 문제는 이들이 높은 경우 차트 값을 볼 수 없다는 것입니다.AChartAngine Barchart 줌 범위 밖의 값

layout_height 매개 변수를 fill_parent 또는 wrap_content로 변경하려고했습니다. 그러나 전체 차트는 보이지 않습니다. 따라서 layout_height에 대한 수정 값을 사용해야합니다.

하지만 차트를 변경하여 모든 차트 값을 보려면 어떻게해야합니까?

두 장의 사진을 첨부하겠습니다. 작은 값을 가진 barchart 중 하나와 표시되지 않는 큰 값을 가진 barchart 중 하나입니다.

사진 1 : Small values all looks good, 사진 2 : One big Value, Chart value is not displayed

내 레이아웃은 다음

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:id="@+id/barchart_diagram_scrollview_parent" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<ScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <LinearLayout android:id="@+id/barchart_diagram_parent" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario1" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="380dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario2" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario3" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario4" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario5" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario6" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario7" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario8" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/chart_container_szenario9" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="350dp"> 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 
</LinearLayout> 

이이 차트 생성 내 코드입니다 다음 변경

dataset[szenario-1] = new XYMultipleSeriesDataset(); 
    multiRenderer[szenario-1] = new XYMultipleSeriesRenderer(); 

    couchseries[szenario-1] = new XYSeries("CouchBase"); 
    couchseries[szenario-1].add(1, szenarioXSizes[0]); 
    perstseries[szenario-1] = new XYSeries("PerstDB"); 
    perstseries[szenario-1].add(2, szenarioXSizes[1]); 
    sqliteseries[szenario-1] = new XYSeries("SQLite"); 
    sqliteseries[szenario-1].add(3, szenarioXSizes[2]); 


    //Formatierung 
    couchRenderer[szenario-1] = new XYSeriesRenderer(); 
    couchRenderer[szenario-1].setColor(Color.RED); 
    couchRenderer[szenario-1].setDisplayChartValues(true); 
    couchRenderer[szenario-1].setChartValuesTextSize(40); 

    perstRenderer[szenario-1] = new XYSeriesRenderer(); 
    perstRenderer[szenario-1].setColor(Color.GREEN); 
    perstRenderer[szenario-1].setDisplayChartValues(true); 
    perstRenderer[szenario-1].setChartValuesTextSize(40); 


    sqliteRenderer[szenario-1] = new XYSeriesRenderer(); 
    sqliteRenderer[szenario-1].setColor(Color.BLUE); 
    sqliteRenderer[szenario-1].setDisplayChartValues(true); 
    sqliteRenderer[szenario-1].setChartValuesTextSize(40); 

    //Min Max X Werte ermitteln 
    min[szenario-1] = 0; 
    max[szenario-1] = 0; 
    for(int i = 0; i < szenarioXSizes.length; i++) { 
     if(szenarioXSizes[i] < min[szenario-1]) 
      min[szenario-1] = szenarioXSizes[i]; 
     if(szenarioXSizes[i] > max[szenario-1]) 
      max[szenario-1] = szenarioXSizes[i]; 
    } 
    MainActivity.log("Gerding", "min: " + min[szenario-1] + " max: " + max[szenario-1]); 

    //Achsen 
    multiRenderer[szenario-1].addSeriesRenderer(couchRenderer[szenario-1]); 
    multiRenderer[szenario-1].addSeriesRenderer(perstRenderer[szenario-1]); 
    multiRenderer[szenario-1].addSeriesRenderer(sqliteRenderer[szenario-1]); 
    multiRenderer[szenario-1].setYAxisMin(0.0); 
    multiRenderer[szenario-1].setYAxisMax(max[szenario-1] + 100); 
    multiRenderer[szenario-1].setXAxisMin(0); 
    multiRenderer[szenario-1].setXAxisMax(4); 
    multiRenderer[szenario-1].setLabelsTextSize(20); 
    multiRenderer[szenario-1].setLegendTextSize(30); 
    multiRenderer[szenario-1].setZoomRate(2); 
    multiRenderer[szenario-1].setXTitle("Datenbank"); 
    multiRenderer[szenario-1].setYTitle("Speicherplatz in Bytes"); 
    multiRenderer[szenario-1].setAxisTitleTextSize(30); 
    multiRenderer[szenario-1].setChartTitle("Szenario " + szenario); 
    multiRenderer[szenario-1].setChartTitleTextSize(40); 
    multiRenderer[szenario-1].setPanEnabled(false,false); 
    multiRenderer[szenario-1].setZoomEnabled(false, false); 

    //Sets the margins, in pixels. order: top, left, bottom, right 
    multiRenderer[szenario-1].setMargins(new int[]{80, 80, 65, 80}); 

    //Farbgebung 
    multiRenderer[szenario-1].setApplyBackgroundColor(true); 
    multiRenderer[szenario-1].setBackgroundColor(Color.WHITE); 
    multiRenderer[szenario-1].setMarginsColor(Color.WHITE); 
    multiRenderer[szenario-1].setLabelsColor(Color.BLACK); 
    multiRenderer[szenario-1].setGridColor(Color.BLACK); 
    multiRenderer[szenario-1].setXLabelsColor(Color.BLACK); 
    multiRenderer[szenario-1].setYLabelsColor(0,Color.BLACK); 
    multiRenderer[szenario-1].setXAxisColor(Color.BLACK); 
    multiRenderer[szenario-1].setYAxisColor(Color.BLACK); 
    multiRenderer[szenario-1].clearXTextLabels(); 
    multiRenderer[szenario-1].setXLabels(0); 

    dataset[szenario-1].addSeries(couchseries[szenario-1]); 
    dataset[szenario-1].addSeries(perstseries[szenario-1]); 
    dataset[szenario-1].addSeries(sqliteseries[szenario-1]); 

    chartContainer[szenario-1] = (LinearLayout) findViewById(chartContainerID[szenario-1]); 
    types[szenario-1] = new CombinedXYChart.XYCombinedChartDef[] 
      { 
        new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 0), 
        new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 1), 
        new CombinedXYChart.XYCombinedChartDef(BarChart.TYPE, 2) 
      }; 
    mChart[szenario-1] = (GraphicalView) ChartFactory.getCombinedXYChartView(getBaseContext(), dataset[szenario-1], multiRenderer[szenario-1], types[szenario-1]); 
    mChart[szenario-1].setBackgroundColor(Color.WHITE); 
    // Adding the Combined Chart to the LinearLayout 
    chartContainer[szenario-1].addView(mChart[szenario-1]); 
} 

답변

0

을 각 다중 연계의 yAxisMax가 내 문제를 해결했습니다.

이 라인 :

multiRenderer[szenario-1].setYAxisMax(max[szenario-1] + 100);  

multiRenderer[szenario-1].setYAxisMax(max[szenario-1] + (max[szenario-1]/6)); 
로 변경되었습니다
관련 문제