在MPAndroidChart中设置XAxis的值

时间:2019-03-04 11:51:43

标签: android mpandroidchart

我想将X轴值设置为堆积的条形图。 我在网上尝试了所有方法,但没有一个能像我预期的那样工作。因此,我无法在图表底部设置xAXİS的值。希望你能理解我。预先感谢

我的图书馆构建书

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0-alpha'.

我的xml文件:

<com.github.mikephil.charting.charts.BarChart
    android:id="@+id/stock_chart"
    android:layout_width="0dp"
    android:layout_height="301dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/toolbar" />

我的Java代码:

 int StockColors[] = new int[]{Color.parseColor("#337B76"), 
   Color.parseColor("#ADCECB")};

        ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(0, new float[]{2000, 3000}));
        entries.add(new BarEntry(1, new float[]{5555, 8888}));
        entries.add(new BarEntry(2, new float[]{500, 900}));
        entries.add(new BarEntry(3, new float[]{9000, 10000}));

        BarDataSet bardataset = new BarDataSet(entries, "");
        bardataset.setColors(StockColors);

        BarData data = new BarData(bardataset);

        stockChart.setData(data);
        stockChart.setScaleEnabled(false);
        stockChart.getAxisRight().setEnabled(false);
        stockChart.getXAxis().setEnabled(false);
        stockChart.getXAxis().setDrawAxisLine(false);

        stockChart.getDescription().setEnabled(false);

        stockChart.setTouchEnabled(true);

        stockChart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainMenu.this, StocksDetail.class);
                startActivity(intent);
            }
        });

        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 = stockChart.getXAxis();
        xAxis.setCenterAxisLabels(true);
        xAxis.setValueFormatter(new 
   StockXAxisValueFormatter(myStockBarChartLabel));

   public static class StockXAxisValueFormatter implements IAxisValueFormatter {

        private final String[] mValues;

        public StockXAxisValueFormatter(String[] mValues) {
            this.mValues = mValues;
        }

        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return mValues[Math.round(value)];
        }
    }

我可以使用已经过时的库来做,但是我想使用最新的库。

1 个答案:

答案 0 :(得分:0)

XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setValueFormatter(new IndexAxisValueFormatter(getAreaCount));

public ArrayList<String> getAreaCount() {

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

       return xAxisLabel ;

        }