希望有人在这里解释如何扭转HorizontalBarChart的顺序,它显示在MPAndroidChart的屏幕截图中(因此代替44.0位于顶部,它位于底部)。
下面的代码显示了我如何创建用于生成HorizontalBarChart的BarDataSet。
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
for (int i = 0; i < count; i++) {
float val = (float) (Math.random() * range);
yVals1.add(new BarEntry(i * spaceForBar, i * 4));
}
BarDataSet set1 = new BarDataSet(yVals1, "DataSet 1");
我试图反转for循环,因此数据集将以相反的方式添加,但似乎生成了相同的HorizontalBarChart。
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
for (int i = count-1; i >= 0; i--) {
float val = (float) (Math.random() * range);
yVals1.add(new BarEntry(i * spaceForBar, i * 4));
}
BarDataSet set1 = new BarDataSet(yVals1, "DataSet 1");
希望有人能够告诉我一种扭转此图表顺序的方法。
我已经尝试过以下代码,其中一个答案是建议的。我之前找到了他们共享的完全相同的链接。这行代码翻转图表,使其位于另一侧(参见第二个屏幕截图)
mChart.getAxisLeft().setInverted(true);
答案 0 :(得分:2)
chart.getAxisLeft().setInverted(true);
取自GitHub PhilJay/MPAndroidChart。
是。如果要执行以下操作,可以反转y轴: 。chart.getAxisLeft()setInverted(真); 这将使高值显示在图表的底部,低值显示在顶部。 不能按顺序操纵x轴。 请注意,此功能未包含在最新的预发行版中,仅适用于未来的提交。
答案 1 :(得分:2)
您错过了i * spaceForBar
替换(count - i) * spaceForBar
。
因此渲染时的坐标序列变为(假设count = 10
):
(10 * 2, 0 * 4) => (9 * 2, 1 * 4) => (8 * 2, 2 * 4) => ... => (0 * 2, 10 * 4)
所以你的代码变成了:
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry> ();
for (int i = 0; i < count; i++) {
float val = (float) (Math.random () * range);
yVals1.add (new BarEntry ((count - i) * spaceForBar, i * 4));
}
BarDataSet set1 = new BarDataSet (yVals1, "DataSet 1");