我想将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)];
}
}
我可以使用已经过时的库来做,但是我想使用最新的库。
答案 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 ;
}