web-dev-qa-db-ja.com

MP Androidチャート(棒グラフ))でX軸ラベルを設定する方法

これは記事への参照です: 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日...)として設定する方法。

6
Shubham Tunwal

あなたはこのように文字列の単純なリストを作るだけです:

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);
      }
 });

お役に立てれば。

8
Sarthak Gandhi

のために 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 "";
 }
});
2
snehal agrawal

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;
    }
1
Gayathri

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()
  • デフォルトでは、xAxisラベルは上部に表示されます。この例では、下部にそれらを示しています。
  • また、テキストの説明と左右の軸を無効にしました(はい、デフォルトでは両側に2つのY軸があります)。
  • グリッドを無効にし、テキストサイズも大きくすることにしました(デフォルトでは小さいです)。
1
JCarlosR

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に表示するデータを準備できます

1
Amir Raza
        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);
            }

        });
0
Vinil Chandran