如何制作存储在 firebase 数据库中的数据图?

How to make graph of data which is stored in firebase database?

我正在尝试使用以下代码将 MPAndroidChart 添加到我的应用程序,但我在

上遇到错误

BarData barData = new BarData(xData, barDataSet); ------this line

错误是

 BarData in BarData cannot be applied to (java.util.ArrayList <java.lang.String>,
com.github.mikephil.charting.data.BarDataSet)

如何解决这个错误,请帮忙

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab1, container, false);
        TextView myTextView = (TextView)rootView.findViewById(R.id.textView5);
        Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/slabo.ttf");
        myTextView.setTypeface(typeface);
        barChart = (BarChart)rootView.findViewById(R.id.chart);
        float yValues [] = {10, 20, 30, 40, 50};
        String xValues [] = {"first", "second", "third", "four", "five"};
        drawBarGraph(yValues,xValues);
        return rootView;
    }
    private void drawBarGraph(float yValues[], String []xValues){
        ArrayList<BarEntry> yData = new ArrayList<>();
        for (int i = 0; i < yValues.length; i++){
            yData.add(new BarEntry(yValues[i],i));
        }
        ArrayList<String> xData = new ArrayList<>();
        for(int i = 0; i < xValues.length; i++){
            xData.add(xValues[i]);
        }
        BarDataSet barDataSet = new BarDataSet(yData, "Cells");
        barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);

    BarData barData =  new BarData(xData, barDataSet);
    barData.setValueTextSize(13f);
    barData.setValueTextColor(Color.BLACK);

    barChart.setData(barData);
    barChart.invalidate();
}

1) 我认为您正在以相反的方式传递 (x,y) 数据。应该是Data.add(new BarEntry(i, yValues[i]));

2) 您正在为 BarData 传递两个参数。应该只有一个。

barData =  new BarData(barDataSet);

3) 对于标签使用 IAxisValueFormatter 并将标签之间的粒度设置为 1f,这是设置时使用的 X 轴值(0、1、2、3、4)之间的差异BarEntrys.

这是基于您的代码的示例代码,MPCharts GitHub, and

中的示例
public class ChartsActivity extends AppCompatActivity {
    BarChart barChart;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chart_layout);

        barChart = (BarChart) findViewById(R.id.chart1);

        float yValues [] = {10, 20, 30, 40, 50};
        String xValues [] = {"first", "second", "third", "four", "five"};

        XAxis xAxis = barChart.getXAxis();
        xAxis.setGranularity(1f);
        xAxis.setGranularityEnabled(true);
        drawBarGraph(yValues,xValues);

    }

    private void drawBarGraph(float [] yValues, String [] xValues){
        ArrayList<BarEntry> yData = new ArrayList<>();
        for (int i = 0; i < yValues.length; i++){
            yData.add(new BarEntry(i,yValues[i]));
        }


        BarDataSet barDataSet = new BarDataSet(yData, "Cells");
        barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);


        BarData barData =  new BarData(barDataSet);

        barData.setValueTextSize(13f);
        barData.setValueTextColor(Color.MAGENTA);

        barChart.getXAxis().setValueFormatter(new LabelFormatter(xValues));
        barChart.setData(barData);
        barChart.invalidate();
    }



    public class LabelFormatter implements IAxisValueFormatter {
        private final String[] mlabels;

        public LabelFormatter(String[] labels) {
            this.mlabels = mlabels;
        }

        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return mLabels[(int) value];
        }
    }
}