饼子会飞 2023-03-12 11:58 采纳率: 57.1%
浏览 11

MPAAndroidChart的自定义x轴越界问题

我在安卓端使用MPAAndroidChart进行图表展示,用的LineChart折线图,有个问题,我拿到一堆数据,有月份和年份的数据,根据里面的年月份自定义x轴标签,因为年份跟月份的数据长度不一样,我想实现点击按钮在同一个折线图里切换年月数据,但是就在自定义x轴下标那里出现了数组越界问题

img


代码类似于这样,因为月份的数据比年份的多,然后切换到年份的时候,就产生了数组越界

  • 写回答

1条回答 默认 最新

  • MarkHan_ 2023-03-12 13:13
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    如果月份和年份的数据长度不同,那么就需要根据当前展示的是年份数据还是月份数据来设置标签数量和数据源。你可以尝试在切换数据时,动态设置标签数量和自定义样式的数据源,以避免数组越界的问题。

    例如,你可以定义两个数组来分别存储年份和月份的标签,然后根据当前展示的数据源来设置标签数量和自定义样式的数据源:

    String[] yearLabels = new String[]{"2019", "2020", "2021"};
    String[] monthLabels = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    
    // 初始化时默认展示年份数据
    String[] labels = yearLabels;
    xAxis.setLabelCount(labels.length);
    
    // 自定义样式
    XAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            int index = (int) value;
            if (index >= 0 && index < labels.length) {
                return labels[index];
            }
            return "";
        }
    });
    
    // 切换到月份数据
    private void switchToMonthData() {
        labels = monthLabels;
        xAxis.setLabelCount(labels.length);
        chart.notifyDataSetChanged();
        chart.invalidate();
    }
    
    // 切换到年份数据
    private void switchToYearData() {
        labels = yearLabels;
        xAxis.setLabelCount(labels.length);
        chart.notifyDataSetChanged();
        chart.invalidate();
    }
    
    
    

    注意,每次切换数据后,需要调用 chart.notifyDataSetChanged() 和 chart.invalidate() 方法来刷新图表,否则标签数量和自定义样式的数据源不会生效。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月12日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络