答案 0 :(得分:23)
您需要标记而不是值吗?
如果是这样,那么它就是这样做的方法。
将XAxis
标签添加到ArrayList
final ArrayList<String> xLabel = new ArrayList<>();
xLabel.add("9");
xLabel.add("15");
xLabel.add("21");
xLabel.add("27");
xLabel.add("33");
// or use some other logic to save your data in list. For ex.
for(i=1; i<50; i+=2)
{
xLabel.add(""+3*i);
}
然后在setValueFormatter
中使用此标签
的实施例强>:
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xLabel.get((int)value);
}
});
<强>结果强>:
答案 1 :(得分:2)
您可以覆盖AxisValueFormatter
即:
xAxis.setValueFormatter(new AxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return "YOUR_TEXT"; // here you can map your values or pass it as empty string
}
@Override
public int getDecimalDigits() {
return 0; //show only integer
}
});
您可以选择组的中心值来映射组名,其他则为空。这将是最简单的方法。
答案 2 :(得分:0)
我找到了解决这个问题的另一种方法。尝试添加这些参数
float groupSpace = 0.06f;
float barSpace = 0.02f;
mChart.setData(data);
mChart.groupBars(0f, groupSpace, barSpace);
答案 3 :(得分:0)
我尝试了以下版本:implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
:
public class BarChartActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bar_chart2);
BarChart chart = (BarChart) findViewById(R.id.barchart);
int[] numArr = {1, 2, 3, 4, 5, 6};
List<BarEntry> entries = new ArrayList<BarEntry>();
for (int num : numArr) {
entries.add(new BarEntry(num, num));
}
BarDataSet dataSet = new BarDataSet(entries, "Numbers");
BarData data = new BarData(dataSet);
ValueFormatter xAxisFormatter = new DayAxisValueFormatter(chart);
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f); // only intervals of 1 day
xAxis.setLabelCount(7);
xAxis.setValueFormatter(xAxisFormatter);
chart.setData(data);
chart.invalidate();
}
public class DayAxisValueFormatter extends ValueFormatter {
private final BarLineChartBase<?> chart;
public DayAxisValueFormatter(BarLineChartBase<?> chart) {
this.chart = chart;
}
@Override
public String getFormattedValue(float value) {
return "your text " + value;
}
}
}
以下是输出: