MPAndroidChart x轴日期时间标签格式

MPAndroidChart x轴日期时间标签格式,第1张

概述背景对于我的应用程序中的一些图表,我正在使用MPAndroidChart库.我的图表的所有水平轴都是基于时间的,它们可以跨越一整年,一个月,一周,一天或跨越一小时.它总是显示一个完整的周期,所以1月到12月,周一到周日,0:00-24:00等.轴的值始终是纪元时间戳(以秒为单位).需求我希望x轴标签

背景

对于我的应用程序中的一些图表,我正在使用MPAndroidChart库.我的图表的所有水平轴都是基于时间的,它们可以跨越一整年,一个月,一周,一天或跨越一小时.它总是显示一个完整的周期,所以1月到12月,周一到周日,0:00-24:00等.轴的值始终是纪元时间戳(以秒为单位).

需求

我希望x轴标签遵循以下规则:

>在一年的第一个月;
>在月或周的情况下,在一天的开始;
>在任何一小时(##:00)(不是所有人),如果是一天的话;
>在一小时的任何5分钟点.

问题

我可以设置x轴的粒度,这样可以确保两个点之间的空间不小于粒度所示,但这可能意味着(在白天跨度的情况下)第一个标签位于凌晨1:00,并且第二个是凌晨2:01,第三个是凌晨3:16,因为它符合(最小)60分钟的粒度.

目前不正确的情况,理想情况下会是[0:00,3:00,6:00,9:00 ..]

有没有办法控制x轴标签的定位,以达到上述结果?

解决方法:

我做了同样的事,试试这个,

 XAxis xAxis = mChart.getXAxis();    xAxis.setposition(XAxis.XAxisposition.BottOM_INSIDE);    xAxis.setDrawGrIDlines(false);    xAxis.setGranularity(1f); // only intervals of 1 day    xAxis.setTypeface(mTflight);    xAxis.setTextSize(8);    xAxis.setTextcolor(ContextCompat.getcolor(this, R.color.colorYellow));    xAxis.setValueFormatter(new GraphXAxisValueFormatter(range, interval, slot));

在你的情况下在这个范围内.如果你想要一个月那么就有12个,如果是第7周等.

在间隔中你通过1.

在你必须通过的插槽中,识别你的数据,如月,年,日,我已经使用枚举.

public class GraphXAxisValueFormatter implements IAxisValueFormatter {private static int MINUTES_INTERVAL = 5;private String[] mValues;private int mInterval;private SensorInterval.Interval mSlot;public GraphXAxisValueFormatter(List<BinSensorData> range, int interval, SensorInterval.Interval slot) {    mValues = new String[range.size()];    mInterval = interval;    mSlot = slot;    Calendar calendar = Calendar.getInstance();    for (int i = 0; i < range.size(); i++) {        calendar.setTimeInMillis(range.get(i).getTime());        int unroundedMinutes = calendar.get(Calendar.MINUTE);        int mod = unroundedMinutes % MINUTES_INTERVAL;        calendar.add(Calendar.MINUTE, mod < 8 ? -mod : (MINUTES_INTERVAL - mod));        String s = "";        if (slot.equals(SensorInterval.Interval.HOUR) || slot.equals(SensorInterval.Interval.DAY))            s = Util.getTimeFromTimestamp(calendar.getTimeInMillis());        else if (slot.equals(SensorInterval.Interval.WEEK))            s = Util.getDayFromTimestamp(calendar.getTimeInMillis());        else if (slot.equals(SensorInterval.Interval.MONTH))            s = Util.getMonthFromTimestamp(calendar.getTimeInMillis());        else if (slot.equals(SensorInterval.Interval.YEAR))            s = Util.getYearFromTimestamp(calendar.getTimeInMillis());        Util.setLog("Time : "+s);        mValues[i] = s;    }}@OverrIDepublic String getFormattedValue(float value, AxisBase axis) {    Util.setLog("Value : "+ value);    if (value % mInterval == 0 && value >= 0) {        return mValues[(int) value % mValues.length];    } else        return "";}@OverrIDepublic int getDecimalDigits() {    return 0;}

见:http://prntscr.com/dbn62x

总结

以上是内存溢出为你收集整理的MPAndroidChart x轴日期/时间标签格式全部内容,希望文章能够帮你解决MPAndroidChart x轴日期/时间标签格式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1102033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存