我想制作一个条形图,其中每个数据点将 3 个不同的数据集分组在一起,如下所示:
但是,我无法使用库提供的功能将条形图分组在一起groupBars
方法,因为无论我为条目设置什么 x 值,它都会根据我在其参数中指定的间隔对条形进行分组。
例如,如果我生成一个具有条目 x 值 {0, 5, 13, 17...50} 的数据集并调用“groupBars”,则我的所有条目都会以 1 个 x 值分开,如下所示:
我想要的是将每个条形分组,并且每个条形在其指定的 x 值处可见。如果我简单地删除groupBars
调用,我得到的东西与我想要的类似,但不完全是因为条形图都是重叠的,如下所示:
如何获得与上图类似的结果,但每个数据集的条完全可见?这是我用于生成数据集并对条形进行分组的代码:
ArrayList<BarEntry> happinessValues = new ArrayList<>();
ArrayList<BarEntry> stressValues = new ArrayList<>();
ArrayList<BarEntry> painValues = new ArrayList<>();
for (int i = 0; i < 50; ++i) {
happinessValues.add(new BarEntry(
i,
datapoint.getHappiness()));
stressValues.add(new BarEntry(
i,
datapoint.getStress()));
painValues.add(new BarEntry(
i,
datapoint.getPain()));
}
HappinessDataset happyDataset;
BarDataSet stressDataset, painDataset;
happyDataset = new HappinessDataset(happinessValues, "Happiness");
stressDataset = new BarDataSet(stressValues, "Stress");
painDataset = new BarDataSet(painValues, "Pain");
BarData data = new BarData(happyDataset, stressDataset, painDataset);
mChart.setData(data);
mChart.getXAxis().setAxisMinimum(0);
mChart.getXAxis().setAxisMaximum(50);
float groupSpace = 0.4f;
float barSpace = 0f; // x3 DataSet
float barWidth = 0.2f; // x3 DataSet
// (0.2 + 0) * 3 + 0.4 = 1.00 -> interval per "group"
mChart.groupBars(startTime, groupSpace, barSpace);