gpt4 book ai didi

java - MPAndroidChart 条形图 - 如何在组之间以随机 x 轴间隔对条形进行分组?

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:18 25 4
gpt4 key购买 nike

我想用 3 个不同的数据集在每个数据点分组在一起制作一个条形图,如下所示:

enter image description here

但是,我无法使用库提供的 groupBars 方法将条形组合在一起,因为无论我为条目设置什么 x 值,它都会根据我在它的参数。

例如,如果我生成一个包含条目 x 值 {0, 5, 13, 17...50} 的数据集并调用“groupBars”,我的所有条目都会像这样以 1 个 x 值分开收集:

enter image description here

我想要的是对每个条形进行分组,并且每个条形都在其指定的 x 值处可见。如果我简单地删除 groupBars 调用,我会得到类似于我想要的东西但不完全是因为条都是重叠的,就像这样:

enter image description here

如何获得类似于上图但每个数据集的条形完全可见的结果?这是我用于生成数据集和对条形图进行分组的代码:

        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);

最佳答案

我已经通过修改每个条形条目的 x 值和条形宽度解决了这个问题。

我用这三个数据集创建了一个新的 BarData 类,并将条形宽度(我们称之为 BAR_WIDTH)设置为 0.2(即三个条形一起将占用 0.6 个单位的空间,并且将在数据集之后有 0.4 个间距单位)。

对于任何给定的柱形条目,我将第一个柱形放置在我想要的 x 值处(我们称之为 i),我的第二个柱形放置在 x 值处 i+BAR_WIDTH,第三个柱位于 i+2*BAR_WIDTH。结果是一组 3 个条形条目,以我想要的任何 x 值为中心,如下所示:

http://i.imgur.com/KrKTE45l.jpg

所以在我上面的代码中,修改bar-entry创建代码如下:

final float BAR_WIDTH = 0.2f;

happinessValues.add(new BarEntry(
i,
datapoint.getHappiness()));
stressValues.add(new BarEntry(
i + BAR_WIDTH,
datapoint.getStress()));
painValues.add(new BarEntry(
i + 2 * BAR_WIDTH,
datapoint.getPain()));

mChart.getBarData().setBarWidth(BAR_WIDTH);

关于java - MPAndroidChart 条形图 - 如何在组之间以随机 x 轴间隔对条形进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com