2015-04-24 2 views
0

Я создаю динамическую демографию на гистограмме, я перерисовываю следующую панель при каждом нажатии. Но проблема в том, чтоПроблема с черновой графикой для Android AchartEngine

  • Бар добавляет справа.
  • Размер бара продолжает сокращаться при добавлении новых баров.

Я должен сделать брусок, который добавляет слева с фиксированной шириной бара.

Вот что происходит с скриншотами On every click bar size changes and adding from right

КОД:

dataset = new XYMultipleSeriesDataset(); 

    series = new XYSeries("data"); 

    dataset.addSeries(series); 

    /* 
    * for (int i = 0; i < 20; i++) { series.add(0, 0); } 
    */ 

    // Now we create the renderer 
    renderer = new XYSeriesRenderer(); 
    renderer.setLineWidth(1); 
    renderer.setColor(Color.RED); 
    renderer.setChartValuesSpacing(1); 
    // Include low and max value 
    // we add point markers 
    renderer.setPointStyle(PointStyle.CIRCLE); 
    renderer.setPointStrokeWidth(.1f); 
    renderer.setShowLegendItem(false); 

    mRenderer = new XYMultipleSeriesRenderer(); 
    mRenderer.addSeriesRenderer(renderer); 
    mRenderer.setBackgroundColor(Color.argb(0x00, 0xff, 0xff, 0xff)); 

    // We want to avoid black border 
    mRenderer.setMarginsColor(Color.argb(0x00, 0xff, 0x00, 0x00)); // transparent 
    mRenderer.setAxesColor(Color.argb(0x00, 0xff, 0x00, 0x00)); 
    mRenderer.setGridColor(Color.argb(0x00, 0xff, 0x00, 0x00)); // margins 

    // margins 
    // Disable Pan on two axis 
    mRenderer.setPanEnabled(false, false); 
    mRenderer.setYAxisMax(20); 
    mRenderer.setYAxisMin(0); 

    mRenderer.setShowGrid(false); // we show the grid 
    mRenderer.clearYTextLabels(); 
    mRenderer.setShowGridY(false); 
    mRenderer.setApplyBackgroundColor(true); 
    mRenderer.setBackgroundColor(Color.argb(0x00, 0xff, 0xff, 0xff)); 
    mRenderer.setMarginsColor(Color.argb(0x00, 0xff, 0xff, 0xff)); 
    mRenderer.setPanEnabled(false, false); 
    mRenderer.setZoomEnabled(false, false); 
    mRenderer.setShowLabels(false); 
    mRenderer.setXLabelsPadding(2); 
    mRenderer.setPointSize(1); 
    mRenderer.setBarSpacing(.2); 

    mChartView = ChartFactory.getBarChartView(this, dataset, mRenderer, 
      BarChart.Type.DEFAULT); 

    graphLayout.addView(mChartView, 0); 

    b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      generate(); 

     } 
    }); 

} 

protected void generate() { 
    int r = randInt(1, 20); 
    // dataset.addSeries(series); 

    series.add(0, r); 

    mChartView.repaint(); 
} 

ответ

0

установить multiRenderer.setXAxisMax (Maxx); стоимость

maxX = количество серий на диаграмме. , если вы хотите, чтобы это не сократилось, попробуйте установить значение maxX, которое позволит диаграмме отображать 25% всех серий в диаграмме. Пример моего кода ниже:

multiRenderer.setXAxisMax (maxX * .25);

Смежные вопросы