2012-08-24 5 views
0

Je suis en train d'essayer de créer un graphique à barres dans android en utilisant achartengine, j'espère que je l'ai créé, mais ici le problème est que les barres que j'ai créées sont trop proches avec chaque barre, je dois montrer ces barres les ordres ci-dessous (ord1, ord2 etc, ..) qui sont tous sur l'axe des x?Comment ajuster les barres dans le graphique à barres dans Android?

Quelqu'un peut-il s'il vous plaît laissez-moi savoir la solution pour venir sur ce problème?

L'image suivante clairement, s'il vous plaît trouver

enter image description here

S'il vous plaît trouver mes sources de référence

BarActivity.java

public class BarActivity extends Activity 
{ 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    Intent intent = createIntent(); 
    startActivity(intent); 
} 


public Intent createIntent() 

{ 

String[] titles = new String[] { "Order's profit of the year", " " }; 
List<double[]> values = new ArrayList<double[]>(); 
values.add(new double[] { 29, 83, 47, 33 }); 
values.add(new double[] {}); 

int[] colors = new int[] { Color.WHITE, Color.BLACK}; 

XYMultipleSeriesRenderer renderer = buildBarRenderer(colors); 
renderer.setOrientation(Orientation.HORIZONTAL); 

setChartSettings(renderer, "Profit for the year 2012", " ", " ", 0,100, 0,100, Color.GRAY, Color.LTGRAY); 

renderer.setXLabels(1); 
renderer.setYLabels(10); 

renderer.addXTextLabel(10.75, "ord1"); 
renderer.addXTextLabel(20.75, "ord2"); 
renderer.addXTextLabel(30.75, "ord3"); 
renderer.addXTextLabel(40.75, "ord4"); 

int length = renderer.getSeriesRendererCount(); 
for (int i = 0; i < length; i++) 
{ 
    SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i); 
    seriesRenderer.setDisplayChartValues(true); 
    } 

return ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT); 
} 

protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) 
{ 

// creates a SeriesRenderer and initializes it with useful default values as well as colors 

    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 

    renderer.setAxisTitleTextSize(16); 

    renderer.setChartTitleTextSize(20); 

    renderer.setLabelsTextSize(15); 

    renderer.setLegendTextSize(15); 

    int length = colors.length; 

    for (int i = 0; i < length; i++) 
    { 
     SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
     r.setColor(colors[i]); 
     renderer.addSeriesRenderer(r); 
    } 
    return renderer; 
    } 

    protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle, 
    String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,int labelsColor) 
    { 

    // sets lots of default values for this renderer 

    renderer.setChartTitle(title); 

    renderer.setXTitle(xTitle); 
    renderer.setYTitle(yTitle); 

    renderer.setXAxisMin(xMin); 
    renderer.setXAxisMax(xMax); 

    renderer.setYAxisMin(yMin); 
    renderer.setYAxisMax(yMax); 

    renderer.setAxesColor(axesColor); 
    renderer.setLabelsColor(labelsColor); 

    renderer.setApplyBackgroundColor(true); 
    renderer.setBackgroundColor(Color.BLACK); 

} 

protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) 
{ 

    // adds the axis titles and values into the dataset 

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
    int length = titles.length; 

    for (int i = 0; i < length; i++) 
    { 
     CategorySeries series = new CategorySeries(titles[i]); 
     double[] v = values.get(i); 
     int seriesLength = v.length; 
     for (int k = 0; k < seriesLength; k++) 
     { 
     series.add(v[k]); 
     } 

     dataset.addSeries(series.toXYSeries()); 
    } 
    return dataset; 
    } 
    } 

Merci pour votre temps précieux ! ..

+0

J'ai répondu à beaucoup de vos questions et je n'ai jamais reçu de commentaires de votre part, je ne vais donc pas répondre à d'autres questions. –

Répondre

1

Vous appelez setChartSettings avec certains paramètres qui définissent la plage visuelle de l'axe X entre 0 et 100 et la même chose pour l'axe Y. Vous pouvez modifier ces paramètres pour avoir un meilleur affichage.

Vous pouvez également jouer avec renderer.setBarSpacing() pour ajuster l'espacement entre les barres dans un graphique de type ber.

+0

Cela fonctionne très bien. Merci pour votre préoccupation. – Nakshatran

+0

J'ai un autre doute puis-je vous demander? Si oui, comment puis-je vous contacter.Si possible, s'il vous plaît envoyez-moi votre mail_id ou le lien de la salle de chat – Nakshatran

Questions connexes