MpAndroidChart - 如何填充组合图表上两条线之间的区域?

2023-12-30

This answer https://stackoverflow.com/a/43452404类似的问题显示了如何填充 MpAndroidChart 上两行之间的区域折线图.

但是,我没有使用 LineChart,而是使用组合图(因为我还有条形数据要显示)。但是将上述解决方案应用于组合图表会导致此异常:

java.lang.ClassCastException:org.example.MyLineLegendRenderer 不能 被转换为 com.github.mikephil.charting.renderer.CombinedChartRenderer 在 com.github.mikephil.charting.charts.CombinedChart.setData(CombinedChart.java:96)

所以我看过组合图表渲染器 https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/CombinedChartRenderer.java但是(不像折线图渲染器 https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/LineChartRenderer.java),它似乎不包含任何填充功能。

那么如何填充组合图表上两条线之间的空间呢?


您可以覆盖createRenderers()方法中的CombinedChartRenderer班级。通过这种方式,您可以为您在应用程序中使用的每种类型的图表使用自己的渲染器。CombinedChart .

它将是这样的:

public class MyCombinedChartRenderer extends CombinedChartRenderer {

    public MyCombinedChartRenderer(CombinedChart chart, ChartAnimator animator, ViewPortHandler viewPortHandler) {
        super(chart, animator, viewPortHandler);
    }

    @Override
    public void createRenderers() {
        this.mRenderers.clear();
        CombinedChart chart = (CombinedChart)this.mChart.get();
        if (chart != null) {
            CombinedChart.DrawOrder[] orders = chart.getDrawOrder();
            CombinedChart.DrawOrder[] var3 = orders;
            int var4 = orders.length;

            for(int var5 = 0; var5 < var4; ++var5) {
                CombinedChart.DrawOrder order = var3[var5];
                switch(order) {
                    case BAR:
                        if (chart.getBarData() != null) {
                            this.mRenderers.add(new BarChartRenderer(chart, this.mAnimator, this.mViewPortHandler));
                        }
                        break;
                    case BUBBLE:
                        if (chart.getBubbleData() != null) {
                            this.mRenderers.add(new BubbleChartRenderer(chart, this.mAnimator, this.mViewPortHandler));
                        }
                        break;
                    case LINE:
                        if (chart.getLineData() != null) {
                            // replace with you own Line chart renderer
                            //this.mRenderers.add(new LineChartRenderer(chart, this.mAnimator, this.mViewPortHandler));
                            this.mRenderers.add(new MyLineChartRenderer(chart, this.mAnimator, this.mViewPortHandler));
                        }
                        break;
                    case CANDLE:
                        if (chart.getCandleData() != null) {
                            this.mRenderers.add(new CandleStickChartRenderer(chart, this.mAnimator, this.mViewPortHandler));
                        }
                        break;
                    case SCATTER:
                        if (chart.getScatterData() != null) {
                            this.mRenderers.add(new ScatterChartRenderer(chart, this.mAnimator, this.mViewPortHandler));
                        }
                }
            }    
        }
    }
}

在上面的代码中,switch阻塞时case LINE:遇到这种情况,我们用我们自己的版本替换默认渲染器:MyLineChartRenderer.

最后,在您的 Activity 代码中,您可以将此渲染器与您的 JointChart 一起使用:

CombinedChart combinedChart = (CombinedChart) findViewById(R.id.barChart);
combinedChart.setRenderer(new MyCombinedChartRenderer(combinedChart, combinedChart.getAnimator(), combinedChart.getViewPortHandler()));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MpAndroidChart - 如何填充组合图表上两条线之间的区域? 的相关文章

随机推荐

  • .NET Core 3.1 中的默认代理

    我需要一些有关 NET Core 3 1 的帮助 以获取需要脱离公司代理的代码 通过将以下内容放入 app config 中 该代码可在 NET 4 7 2 中运行 我在这个网站上了解到这一点 谢谢 允许人们通过公司代理服务器
  • PHPUnit:期望以数组作为参数的方法调用

    我有一个 PHPUnit 测试用例 其中我对以下代码片段感到困惑 我想检查一下该方法actionUpload正确调用函数 hideAndSaveDataLines 即第一个参数是一个数组 正如我所期望的那样 public function
  • 表达式中未定义函数“Nz”

    我用谷歌搜索了这个错误 但还没有得出为什么会收到这个错误的结论 我正在尝试用一些数据填充 DataGridView 这是我的代码 Private Sub LoadGrid Dim cmd As New OleDbCommand Dim dt
  • 计算月球表面旋转作为地球坐标的函数

    我正在编写一个 Android 应用程序 可以显示任何日期的月相 目前 我正在展示北半球的一般视图 月球受阳光照射的部分从right to left0 观察旋转 然而 当从南半球观察月球时 这种运动是相反的 而在赤道附近 则完全发生了不同的
  • 获取 VMS 的驱动程序以连接到 SQL Server 2005

    我想从 COBOL VMS 系统连接到 SQL Server 2005 实例 有人能给我指出一个运行良好的驱动程序吗 这类似于另一个问题 https stackoverflow com questions 898055 cobol to s
  • 通过 RubyGems 安装 JSON 1.8.1 时出错

    我的操作系统是 Windows 7 64x Ultimate 我尝试像这样安装 json gem gem install json v 1 8 1 但我有一个问题 Temporarily enhancing PATH to include
  • Dart/Flutter 的代码覆盖率可视化(特别适用于 Windows 和 VS Code)

    这原本是一个Dart Code 存储库中的 Github 问题 https github com Dart Code Dart Code issues 2860 1 背景 我一直在开发一个包含数百个测试的包 因此一种可视化代码覆盖率的简单方
  • 在 docker 环境中 pip install git+url

    我正在使用这个 Docker 来自lambda lambda python3 6 并且我需要安装一个私有存储库包 问题是 Docker 没有 git 我无法使用 apt get 或 apk install 安装 git 因为 Docker
  • Android - 以编程方式制作的 EditText 不显示键盘

    我正在制作一个应用程序 我正在使用ArrayAdapter
  • 如何获取 wkhtmltopdf 正文中的总页数?

    是否可以访问主要内容主体中的 topage 变量 我知道您可以在页眉和页脚中执行此操作 但在这个特定用例中 我需要在正文中添加一句话 本文档包含 XX 页 这对我有用 但需要位于页眉 ou 页脚 在体内我认为这是不可能的 就像他们在 Git
  • d3 用逗号替换分号

    希望比我聪明的人能够快速帮助解决这个问题 我有带有分号分隔符的 csv 文件 它无法读取标题 d3 csv file csv function error data data forEach function d d date parseD
  • 将 Jar 添加到独立的 pyspark

    我正在启动一个 pyspark 程序 export SPARK HOME export PYTHONPATH SPARK HOME python SPARK HOME python lib py4j 0 9 src zip python 和
  • C++ 中的动态数组 VS 链表[重复]

    这个问题在这里已经有答案了 当我们有动态数组列表时 为什么还需要链表 我研究过静态列表和链表 我了解动态数组列表 但我无法找出两者之间的确切区别 有人请帮我回答这个问题 动态数组是一种根据内容数量向上或向下调整自身大小的数组 优势 通过索引
  • 如何编写匹配嵌套括号的递归正则表达式?

    我正在尝试编写一个与嵌套括号匹配的正则表达式 例如 text text text text casual characters 像这样的字符串应该被匹配 因为所有嵌套的括号都被关闭 而不是 text text casualChars 不应该
  • JQuery 添加/删除类 onClick

    单击时打开子菜单 下次单击时关闭 这就是我想要实现的目标 例子是这一页 http jquery plugins net page 6 关注 链接下的子菜单 它打开子菜单 添加 打开 类 但不关闭 卡住 my html ul li a hre
  • Python:使用 shell=False 的子进程调用不起作用

    我正在使用 Python 脚本来调用 Java 虚拟机 以下命令有效 subprocess call rvm shell False works subprocess call rvm xyz shell True works But su
  • 资源上的权限“artifactregistry.repositories.downloadArtifacts”被拒绝

    虽然工件存储库已成功创建 但即使向我在 gcloud cli 上使用的会计授予所有工件权限后 运行 docker Push 将图像推送到 google 工件注册表也会失败并出现权限错误 推送图片的命令 docker push us cent
  • Git 子树工作流程

    在我当前的项目中 我正在使用一个开源论坛 https github com vanillaforums Garden https github com vanillaforums Garden 我本来打算做这样的事情 git remote
  • 为什么 HAXM 配置内存太低“969 MB”?它与需要 1 GB RAM 的 AVD API 级别 23 不兼容

    这是显示的错误消息安卓工作室1 4 console emulator WARNING Increasing RAM size to 1GB emulator device fd 560 HAXM is not working and emu
  • MpAndroidChart - 如何填充组合图表上两条线之间的区域?

    This answer https stackoverflow com a 43452404类似的问题显示了如何填充 MpAndroidChart 上两行之间的区域折线图 但是 我没有使用 LineChart 而是使用组合图 因为我还有条形