如何制作存储在 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)之间的差异BarEntry
s.
这是基于您的代码的示例代码,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];
}
}
}
我正在尝试使用以下代码将 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)之间的差异BarEntry
s.
这是基于您的代码的示例代码,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];
}
}
}