C'est en référence à l'article: https://github.com/PhilJay/MPAndroidChart/wiki/Setting-Data sous le titre Graphique à barres . Dans le code ci-dessous:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_graph_test, container, false);
BarChart chart = view.findViewById(R.id.bar_Chart_test);
List<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(0f, 30f));
entries.add(new BarEntry(1f, 80f));
entries.add(new BarEntry(2f, 60f));
entries.add(new BarEntry(3f, 50f));
// gap of 2f
entries.add(new BarEntry(5f, 70f));
entries.add(new BarEntry(6f, 60f));
BarDataSet set = new BarDataSet(entries, "BarDataSet");
BarData data = new BarData(set);
data.setBarWidth(0.9f); // set custom bar width
chart.setData(data);
chart.setFitBars(true); // make the x-axis fit exactly all bars
chart.invalidate(); // refresh
return view;
}
le résultat était:
Ici, les valeurs X ne sont pas affichées . Cliquez ici pour la capture d'écran
comment définir les valeurs de l'axe X en mois (1er janvier, 2 janvier, 3 janvier .....) comme indiqué dans l'article.
Vous venez de faire une simple liste de chaînes comme celle-ci:
final ArrayList<String> xAxisLabel = new ArrayList<>();
xAxisLabel.add("Mon");
xAxisLabel.add("Tue");
xAxisLabel.add("Wed");
xAxisLabel.add("Thu");
xAxisLabel.add("Fri");
xAxisLabel.add("Sat");
xAxisLabel.add("Sun");
Ensuite, vous faites ceci:
XAxis xAxis = mBarChart.getXAxis();
xAxis.setValueFormatter(new IAxisValueFormatter()
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xAxisLabel.get((int) value);
}
});
J'espère que cela t'aides.
Pour le com.github.PhilJay:MPAndroidChart:v3.0.3
J'utilise une liste d'étiquettes:
final List list_x_axis_name = new ArrayList<>();
list_x_axis_name.add("label1");
list_x_axis_name.add("label2");
list_x_axis_name.add("label3");
list_x_axis_name.add("label4");
list_x_axis_name.add("label5");
et en définissant l'étiquette comme ceci:
BarChart chartBar = (BarChart) findViewById(R.id.chartBar);
XAxis xAxis = chartBar.getXAxis();
xAxis.setGranularity(1f);
xAxis.setCenterAxisLabels(true);
xAxis.setLabelRotationAngle(-90);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@override
public String getFormattedValue(float value, AxisBase axis) {
if (value >= 0) {
if (value <= list_x_axis_name.size() - 1) {
return list_x_axis_name.get((int) value);
}
return "";
}
return "";
}
});
Dans l'étiquette de l'axe X définie dynamiquement,
XAxis xAxis = chart.getXAxis();
xAxis.setValueFormatter(new IndexAxisValueFormatter(getDate));
public ArrayList<String> getDate() {
ArrayList<String> label = new ArrayList<>();
for (int i = 0; i < yourList.size(); i++)
label.add(yourList.get(i).getDateValue());
return label;
}
Au cas où quelqu'un aurait besoin d'un exemple de version de Kotlin, je l'ai personnalisé un peu:
val labels = arrayListOf(
"Ene", "Feb", "Mar",
"Abr", "May", "Jun",
"Jul", "Ago", "Set",
"Oct", "Nov", "Dic"
)
barChart.xAxis.valueFormatter = IndexAxisValueFormatter(labels)
barChart.xAxis.position = XAxis.XAxisPosition.BOTTOM
barChart.setDrawGridBackground(false)
barChart.axisLeft.isEnabled = false
barChart.axisRight.isEnabled = false
barChart.description.isEnabled = false
val entries = arrayListOf(
BarEntry(0f, 10f),
BarEntry(1f, 20f),
BarEntry(2f, 30f),
BarEntry(3f, 40f),
BarEntry(4f, 50f),
BarEntry(5f, 60f),
BarEntry(6f, 70f),
BarEntry(7f, 60f),
BarEntry(8f, 50f),
BarEntry(9f, 40f),
BarEntry(10f, 30f),
BarEntry(11f, 20f)
)
val set = BarDataSet(entries, "BarDataSet")
set.valueTextSize = 12f
barChart.data = BarData(set)
barChart.invalidate()
Kotlin:
val xAxisLabels = listOf("1", "2", "3", "4", "5", "6" ...)
barChartView.xAxis.valueFormatter = IndexAxisValueFormatter(xAxisLabels)
Java:
ArrayList<String> xAxisLables = new ArrayList();
xAxisLables.add("1");
xAxisLables.add("2");
xAxisLables.add("3");
xAxisLables.add("4"); ...
OR
String[] xAxisLables = new String[]{"1","2", "3", "4" ...};
barChartView.getXAxis().setValueFormatter(new IndexAxisValueFormatter(xAxisLables));
Vous pouvez préparer toutes les données que vous souhaitez dans xAxisLabels
à afficher
HorizontalBarChart chart = findViewById(R.id.hbc_graph);
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(0, 3f));
entries.add(new BarEntry(1, 8f));
entries.add(new BarEntry(2, 6f));
entries.add(new BarEntry(3, 11f));
entries.add(new BarEntry(4, 5f));
entries.add(new BarEntry(5, 14f));
BarDataSet dataSet = new BarDataSet(entries,"Horizontal Bar");
BarData data = new BarData(dataSet);
chart.setData(data);
chart.animateXY(2000, 2000);
chart.invalidate();
ArrayList<String> xLabels = new ArrayList<>();
xLabels.add("January");
xLabels.add("February");
xLabels.add("March");
xLabels.add("April");
xLabels.add("May");
xLabels.add("June");
XAxis xAxis = chart.getXAxis();
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
Print.e(value);
return xLabels.get((int) value);
}
});