J'ai un graphique à barres à l'aide de AcharTengine code> Library comme indiqué ci-dessous ::
public class MainActivity extends Activity {
private String[] mMonth = new String[] {
"Jan", "Feb" , "Mar", "Apr", "May", "Jun",
"Jul", "Aug" , "Sep", "Oct", "Nov", "Dec"
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Getting reference to the button btn_chart
Button btnChart = (Button) findViewById(R.id.btn_chart);
// Defining click event listener for the button btn_chart
OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Draw the Income vs Expense Chart
openChart();
}
};
// Setting event click listener for the button btn_chart of the MainActivity layout
btnChart.setOnClickListener(clickListener);
}
private void openChart(){
int[] x = { 0,1,2,3,4,5,6,7 };
int[] income = { 2000,2500,2700,3000,2800,3500,3700,3800};
int[] expense = {2200, 2700, 2900, 2800, 2600, 3000, 3300, 3400 };
// Creating an XYSeries for Income
//CategorySeries incomeSeries = new CategorySeries("Income");
XYSeries incomeSeries = new XYSeries("Income");
// Creating an XYSeries for Income
XYSeries expenseSeries = new XYSeries("Expense");
// Adding data to Income and Expense Series
for(int i=0;i<x.length;i++){
incomeSeries.add(i,income[i]);
expenseSeries.add(i,expense[i]);
}
// Creating a dataset to hold each series
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
// Adding Income Series to the dataset
dataset.addSeries(incomeSeries);
// Adding Expense Series to dataset
dataset.addSeries(expenseSeries);
// Creating XYSeriesRenderer to customize incomeSeries
XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
incomeRenderer.setColor(Color.rgb(130, 130, 230));
incomeRenderer.setFillPoints(true);
incomeRenderer.setLineWidth(2);
incomeRenderer.setDisplayChartValues(true);
// Creating XYSeriesRenderer to customize expenseSeries
XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();
expenseRenderer.setColor(Color.rgb(220, 80, 80));
expenseRenderer.setFillPoints(true);
expenseRenderer.setLineWidth(2);
expenseRenderer.setDisplayChartValues(true);
Calendar cal = Calendar.getInstance();
cal.clear(Calendar.HOUR);
// Creating a XYMultipleSeriesRenderer to customize the whole chart
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
multiRenderer.setXLabels(0);
multiRenderer.setChartTitle("Income vs Expense Chart");
multiRenderer.setXTitle("Year 2012");
multiRenderer.setYTitle("Amount in Dollars");
multiRenderer.setZoomButtonsVisible(true);
for(int i=0; i< x.length;i++){
multiRenderer.addXTextLabel(i, mMonth[i]);
}
// Adding incomeRenderer and expenseRenderer to multipleRenderer
// Note: The order of adding dataseries to dataset and renderers to multipleRenderer
// should be same
multiRenderer.addSeriesRenderer(incomeRenderer);
multiRenderer.addSeriesRenderer(expenseRenderer);
// Creating an intent to plot bar chart using dataset and multipleRenderer
Intent intent = ChartFactory.getBarChartIntent(getBaseContext(), dataset, multiRenderer, Type.DEFAULT);
// Start Activity
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
3 Réponses :
Vous pouvez conserver des horodatages Unix sur l'axe X et contrôler les étiquettes vous-même. Vous pouvez ajouter des étiquettes à axes X personnalisées à l'aide de:
SimpleDateFormat format = new SimpleDateFormat("h a"); renderer.addXTextLabel(date.getTime(), format.format(date.getTime()));
S'il vous plaît pouvez-vous m'expliquer avec un exemple monsieur..regarde des horodatages UNIX sur l'axe x ..
Si j'avais compris que tu as expliqué ici monsieur, alors j'accepterais sûrement votre réponse , je n'ai pas utilisé votre méthode série.add (date.gettime (), valeur); code> dans mon code u peut il suffit de vérifier tat ..Si vous ne vous dérangerez pas de m'expliquer clairement que votre méthode sera reconnaissante pour vous et primer joyeusement la prime TAT
et mes ANS ne fonctionnent pas bien pour les données dynamiques, lorsque j'utilise repeindre (); code> sur la réception de nouvelles données, la largeur de la barrette continue à diminuer, si wat peut être le problème
Voici comment le graphique ressemble lorsque je passe de nouvelles données et repeindre
@ Dan :: Y a-t-il une API de changer de position de barres dans Multi Series Bar graphique, S1, S2, S3 Rae Series Si nous introduisons le graphique, nous obtenons S1, S2, S2, S2 code>
S1, S2 , S3 code>
S1, S2, S3 code>
S1, S2, S3 CODE> .... Donc y a-t-il de toute façon pour le changer à chaque fois sur la valeur de la valeur Ce
S1, S3, S2 code>
S3, S2, S1, S1 CODE>
S1, S2, S3 CODE>
S1, S3, S2 CODE> < Code> S3, S1, S2 Code> ... Donc sur
J'ai fait quelque chose comme ceci :: Pour des données statiques J'ai un graphique comme p> pour les données de temps réel, des séries de mise à jour comme p> comme et Lorsque NewVal est disponible p> puis appelez openchart (); code> dans ce premier jeu de données clair (
DataSet.clear (); Code >)
puis appelez
repeindre (); code> p> p>
Je pense que pour votre besoin, la création de cartes à barres personnalisées facilitera Easy.here est l'exemple, vous pouvez développer avec cet exemple en utilisant simplement 5 tableaux que vous souhaitez afficher sur le graphique. P>
graphique à barres dans Android sans pots intégrés code>
p>
Juste, allez à approfondir l'exemple et vérifiez-le. p>
L'avantage principal est que vous n'avez pas besoin d'utiliser des bibliothèques prédéfinies pour dessiner des diagrammes. Il sera possible avec une simple interface utilisateur android comme textview and listview code> p>