これは記事への参照です: https://github.com/PhilJay/MPAndroidChart/wiki/Setting-Data 見出しの下棒グラフ。以下の所定のコードでは:
@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;
}
出力は:
ここでは、X値は表示されません。 ScreenShotについては、ここをクリックしてください
記事に表示されているように、X軸の値を月(1月1日、1月2日、3月1日...)として設定する方法。
あなたはこのように文字列の単純なリストを作るだけです:
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");
次に、これを行います:
XAxis xAxis = mBarChart.getXAxis();
xAxis.setValueFormatter(new IAxisValueFormatter()
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xAxisLabel.get((int) value);
}
});
お役に立てれば。
のために com.github.PhilJay:MPAndroidChart:v3.0.3
私はラベルリストを使用しています:
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");
次のようにラベルを設定します:
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 "";
}
});
X軸ラベルを動的に設定するには、
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;
}
Kotlinバージョンの例が必要な場合に備えて、少しカスタマイズしました。
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));
xAxisLabels
に表示するデータを準備できます
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);
}
});