在条形图中,我创建的第一行和最后一行一直被切成两半(即使我添加了额外的栏)。这也会导致条形图上方的值不合适。我在一个片段中膨胀这个。
轴也只增加0.9而不是1.为了解决这个问题,我需要实现AxisValueFormatter接口吗?
图像:
代码: 的.java
chart = (BarChart) view.findViewById(R.id.chart1);
// Chart settings
chart.setDrawGridBackground(false);
chart.setHighlightFullBarEnabled(true);
chart.setDrawBarShadow(false);
chart.setDrawValueAboveBar(true);
chart.setDescription("");
// Settings for X-Axis
XAxis xAxis = chart.getXAxis();
xAxis.setDrawGridLines(false);
xAxis.setEnabled(true);
xAxis.setDrawLabels(true);
xAxis.setPosition(XAxisPosition.BOTTOM);
// Settings for Y-Axis
YAxis leftAxis = chart.getAxisLeft();
YAxis rightAxis = chart.getAxisRight();
leftAxis.setAxisMinValue(0f);
rightAxis.setAxisMinValue(0f);
BARENTRY = new ArrayList<>();
BarEntryLabels = new ArrayList<String>();
BARENTRY.add(new BarEntry(2f, 1));
BARENTRY.add(new BarEntry(3f, 2));
BARENTRY.add(new BarEntry(4f, 3));
BARENTRY.add(new BarEntry(5f, 4));
BARENTRY.add(new BarEntry(6f, 5));
Bardataset = new BarDataSet(BARENTRY, "Projects");
Bardataset.setColors(ColorTemplate.COLORFUL_COLORS);
BARDATA = new BarData(Bardataset);
chart.setData(BARDATA);
chart.invalidate(); // refresh
chart.animateY(1500);
return view;
答案 0 :(得分:23)
回答你的问题:
为了正确显示您的酒吧,您需要适合这些酒吧,如此(不要问我为什么它默认不启用):
chart.setFitBars(true)
您可以在BarChart
javadocs中找到更多信息:
setFitBars(boolean enabled)
:将条形宽度的一半添加到x轴范围的每一边,以便完整显示条形图的条形。
如果你有CombinedChart
,可以使用setSpaceMin()
和setSpaceMax()
在轴的两端添加额外的间距:
XAxis xAxis = chart.getXAxis();
xAxis.setSpaceMin(barData.getBarWidth() / 2f);
xAxis.setSpaceMax(barData.getBarWidth() / 2f);
目前无法影响轴上呈现的值位置。创建ValueFormatter
仅更改显示的文本,而不是标签的实际位置。
答案 1 :(得分:2)
答案 2 :(得分:1)
请使用setAxisMinimum
和setAxisMaximum
,它会完美运作!
实例化BarData
后,您只需要
chart.getXAxis().setAxisMinimum(-data.getBarWidth() / 2);
chart.getXAxis().setAxisMaximum(count-data.getBarWidth() / 2);`
不需要setFitBars
,并且计数大小为BARENTRY
。
答案 3 :(得分:0)
我刚刚修复了它,使用
设置了x范围的最小值 barChart.setFitBars(true);
barChart.setVisibleXRangeMinimum(barEntries.size());