将 x 轴标签添加到 mpandroid 条形图仅显示数组列表中的第一个标签
adding x-axis labels to mpandroid bar chart shows only the first label in the array list
我想在我的条形图中添加 x 轴标签,但我得到的只是第一个标签,仅显示
我使用的代码如下。我已经根据我正在使用的 mpandroidchart
库的文档中提供的演示数据对其进行了自定义
public class HomeFragment extends SimpleFragment implements OnChartGestureListener {
@NonNull
public static Fragment newInstance() {
return new HomeFragment();
}
private BarChart chart;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_home, container, false);
BarChart chart = (BarChart) v.findViewById(R.id.chart);
BarData data = new BarData(getDataSet());
data.setBarWidth(10f);
chart.setData(data);
chart.animateXY(2000, 2000);
chart.invalidate();
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(true);
xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));
return v;
}
private ArrayList getDataSet() {
ArrayList dataSets = null;
ArrayList valueSet1 = new ArrayList();
BarEntry v1e1 = new BarEntry(0.f, 0); // Jan
valueSet1.add(v1e1);
BarEntry v1e2 = new BarEntry(20.000f, 2); // Feb
valueSet1.add(v1e2);
BarEntry v1e3 = new BarEntry(40.000f, 4); // Mar
valueSet1.add(v1e3);
BarEntry v1e4 = new BarEntry(60.000f, 6); // Apr
valueSet1.add(v1e4);
BarEntry v1e5 = new BarEntry(80.000f, 8); // May
valueSet1.add(v1e5);
BarEntry v1e6 = new BarEntry(100.000f, 10); // Jun
valueSet1.add(v1e6);
BarEntry v1e7 = new BarEntry(120.000f, 12); // Jan
valueSet1.add(v1e7);
BarEntry v1e8 = new BarEntry(140.000f, 14); // Feb
valueSet1.add(v1e8);
BarEntry v1e9 = new BarEntry(160.000f, 16); // Mar
valueSet1.add(v1e9);
BarEntry v1e10 = new BarEntry(180.000f, 18); // Apr
valueSet1.add(v1e10);
BarEntry v1e11 = new BarEntry(200.000f, 20); // May
valueSet1.add(v1e11);
BarEntry v1e12 = new BarEntry(220.000f, 22); // Jun
valueSet1.add(v1e12);
BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Monthly Sales");
barDataSet1.setColors(ColorTemplate.MATERIAL_COLORS);
dataSets = new ArrayList();
dataSets.add(barDataSet1);
return dataSets;
}
private ArrayList getXAxisValues() {
ArrayList xAxis = new ArrayList();
xAxis.add("JAN");
xAxis.add("FEB");
xAxis.add("MAR");
xAxis.add("APR");
xAxis.add("MAY");
xAxis.add("JUN");
xAxis.add("JULY");
xAxis.add("AUG");
xAxis.add("SEPT");
xAxis.add("OCT");
xAxis.add("NOV");
xAxis.add("DEC");
return xAxis;
}
}
我是这个库的新手,因此我可能犯了一些错误,我正在使用这个示例,因为它可以很容易地进一步自定义它以从数据库中获取数据。我可能做错了什么?
我在循环中尝试了这一行 xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));
for(int i=0; i<=12;i++){
xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues().subList(0,i)));
}
那也只是显示第一个标签
您不需要以下代码:
for(int i=0; i<=12;i++){
xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues().subList(0,i)));
}
您只需要用这一行替换上面的代码:
chart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(getXAxisLables()));
获取标签的方法是:
private ArrayList<String> getXAxisLabels()
{
ArrayList<String> labels = new ArrayList<String> ();
labels.add( "JAN");
labels.add( "FEB");
labels.add( "MAR");
labels.add( "APR");
labels.add( "MAY");
labels.add( "JUN");
return labels;
}
请根据您的要求修改getLabels()方法。
我想在我的条形图中添加 x 轴标签,但我得到的只是第一个标签,仅显示
我使用的代码如下。我已经根据我正在使用的 mpandroidchart
库的文档中提供的演示数据对其进行了自定义 public class HomeFragment extends SimpleFragment implements OnChartGestureListener {
@NonNull
public static Fragment newInstance() {
return new HomeFragment();
}
private BarChart chart;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_home, container, false);
BarChart chart = (BarChart) v.findViewById(R.id.chart);
BarData data = new BarData(getDataSet());
data.setBarWidth(10f);
chart.setData(data);
chart.animateXY(2000, 2000);
chart.invalidate();
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(true);
xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));
return v;
}
private ArrayList getDataSet() {
ArrayList dataSets = null;
ArrayList valueSet1 = new ArrayList();
BarEntry v1e1 = new BarEntry(0.f, 0); // Jan
valueSet1.add(v1e1);
BarEntry v1e2 = new BarEntry(20.000f, 2); // Feb
valueSet1.add(v1e2);
BarEntry v1e3 = new BarEntry(40.000f, 4); // Mar
valueSet1.add(v1e3);
BarEntry v1e4 = new BarEntry(60.000f, 6); // Apr
valueSet1.add(v1e4);
BarEntry v1e5 = new BarEntry(80.000f, 8); // May
valueSet1.add(v1e5);
BarEntry v1e6 = new BarEntry(100.000f, 10); // Jun
valueSet1.add(v1e6);
BarEntry v1e7 = new BarEntry(120.000f, 12); // Jan
valueSet1.add(v1e7);
BarEntry v1e8 = new BarEntry(140.000f, 14); // Feb
valueSet1.add(v1e8);
BarEntry v1e9 = new BarEntry(160.000f, 16); // Mar
valueSet1.add(v1e9);
BarEntry v1e10 = new BarEntry(180.000f, 18); // Apr
valueSet1.add(v1e10);
BarEntry v1e11 = new BarEntry(200.000f, 20); // May
valueSet1.add(v1e11);
BarEntry v1e12 = new BarEntry(220.000f, 22); // Jun
valueSet1.add(v1e12);
BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Monthly Sales");
barDataSet1.setColors(ColorTemplate.MATERIAL_COLORS);
dataSets = new ArrayList();
dataSets.add(barDataSet1);
return dataSets;
}
private ArrayList getXAxisValues() {
ArrayList xAxis = new ArrayList();
xAxis.add("JAN");
xAxis.add("FEB");
xAxis.add("MAR");
xAxis.add("APR");
xAxis.add("MAY");
xAxis.add("JUN");
xAxis.add("JULY");
xAxis.add("AUG");
xAxis.add("SEPT");
xAxis.add("OCT");
xAxis.add("NOV");
xAxis.add("DEC");
return xAxis;
}
}
我是这个库的新手,因此我可能犯了一些错误,我正在使用这个示例,因为它可以很容易地进一步自定义它以从数据库中获取数据。我可能做错了什么?
我在循环中尝试了这一行 xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));
for(int i=0; i<=12;i++){
xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues().subList(0,i)));
}
那也只是显示第一个标签
您不需要以下代码:
for(int i=0; i<=12;i++){
xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues().subList(0,i)));
}
您只需要用这一行替换上面的代码:
chart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(getXAxisLables()));
获取标签的方法是:
private ArrayList<String> getXAxisLabels()
{
ArrayList<String> labels = new ArrayList<String> ();
labels.add( "JAN");
labels.add( "FEB");
labels.add( "MAR");
labels.add( "APR");
labels.add( "MAY");
labels.add( "JUN");
return labels;
}
请根据您的要求修改getLabels()方法。