MPAndroidChart:每个缩放级别的xValues不同

时间:2016-01-27 08:06:28

标签: android charts mpandroidchart

考虑一个年份为xValues的图表。我想在用户放大或双击时将xValues更改为月份。并将xValues更改为下一个缩放级别的天数。 有没有可能与伟大的MPAndroidChart?

2 个答案:

答案 0 :(得分:1)

我会玩这个功能

float displayed = totalitemcount/30;
mChart.setScaleMinima(displayed, 1f);

我将此设置为显示30个值,但您可以将其设置为显示更改值所需的内容,并在用户双击屏幕时更改标记。

答案 1 :(得分:0)

这是我的解决方案:

xl.setValueFormatter(new XAxisValueFormatter() {
    @Override
    public String getXValue(String original, int index, ViewPortHandler viewPortHandler) {
        int months= index/30, days= index%30;
        if (days==0) return String.format(Locale.ENGLISH, "%d months", months);
        return String.format(Locale.ENGLISH, "%s%s",
        months == 0 ? "" : String.format(Locale.ENGLISH, "%d months and ", months),
        String.format(Locale.ENGLISH, "%d days", days));
    }
});

@Override
public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
    int nLabelsToSkip= Math.min(30, Math.max((int) (120 / mChart.getViewPortHandler().getScaleX()), 0));
    nLabelsToSkip = (nLabelsToSkip/5) * 5 -1; // (n+1) should be dividable by 5        
    mChart.getXAxis().setLabelsToSkip(nLabelsToSkip);
}

完全缩小:0个月,1个月,2个月,......

放大等级1:0个月,0个月和15天,1个月,1个月和15天,...

放大等级2:0个月,0个月和10天,0个月和20天,1个月,1个月和10天,......

缩放等级3:0个月,0个月和5天,0个月和10天,0个月和15天,0个月和20天,0个月和25天,1个月,...

缩放级别n:0个月,0个月和1天,0个月和2天,...

感谢伟大的图书馆@PhilJay。