MPAndroidChart:如何反转Horizo​​ntalBarChart的顺序?

时间:2017-01-14 21:24:02

标签: android mpandroidchart

希望有人在这里解释如何扭转Horizo​​ntalBarChart的顺序,它显示在MPAndroidChart的屏幕截图中(因此代替44.0位于顶部,它位于底部)。

下面的代码显示了我如何创建用于生成Horizo​​ntalBarChart的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循环,因此数据集将以相反的方式添加,但似乎生成了相同的Horizo​​ntalBarChart。

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

Screenshot of HorizontalBarChart

Screenshot of HorizontalBarChart with inverted left axis

2 个答案:

答案 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");