使用 MPAndroidChart 库重叠饼图标签

2023-12-15

我正在使用菲尔杰MPAndroid图表图书馆:

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

And I implemented Pie Chart. Pie Chart with much entries cause labels overlapping as below: enter image description here

但我需要类似下图的东西。这是非常非常漂亮的,没有任何重叠并且带有标签背景:

enter image description here

这是我的代码:

PieDataSet dataSet = new PieDataSet(entries, getString(R.string.chart_guide));
dataSet.setDrawValues(DRAW_VALUES); // To show/not show Slice Texts
dataSet.setDrawIcons(DRAW_ICONS);
dataSet.setSliceSpace(0f);
dataSet.setIconsOffset(new MPPointF(0, 40));
dataSet.setSelectionShift(5f);
setSlicesColors(dataSet);
dataSet.setSelectionShift(0f);

// Outside values
dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
dataSet.setValueLinePart1OffsetPercentage(20f);
dataSet.setValueLinePart1Length(0.2f);
dataSet.setValueLinePart2Length(0.4f);
dataSet.setUsingSliceColorAsValueLineColor(USING_SLICE_COLOR_AS_VALUE_LINE_COLOR);
binding.pieChart.setExtraOffsets(5, 10, 5, 5);

PieData data = new PieData(dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(11f);
data.setValueTextColor(Color.BLUE);

binding.pieChart.setData(data);

binding.pieChart.highlightValues(null);
binding.pieChart.invalidate();

binding.pieChart.setDrawMarkers(DRAW_MARKERS); // To remove markers when click
binding.pieChart.setDrawEntryLabels(DRAW_ENTRY_LABELS); // To remove labels from piece of pie
binding.pieChart.setEntryLabelColor(Color.BLACK);
binding.pieChart.setEntryLabelTextSize(12f);

binding.pieChart.setUsePercentValues(USE_PERCENT_VALUES);
binding.pieChart.getDescription().setEnabled(DESCRIPTION_ENABLED); // To remove description of pie

binding.pieChart.setDragDecelerationFrictionCoef(0.95f);

binding.pieChart.setCenterText(generateCenterSpannableText());

binding.pieChart.setDrawHoleEnabled(DRAW_HOLE_ENABLED);
binding.pieChart.setHoleColor(Color.WHITE);

binding.pieChart.setTransparentCircleColor(Color.LTGRAY);
binding.pieChart.setTransparentCircleAlpha(110);

binding.pieChart.setHoleRadius(58f);
binding.pieChart.setTransparentCircleRadius(61f);

binding.pieChart.setDrawCenterText(DRAW_CENTER_TEXT);

binding.pieChart.setRotationAngle(0);
// enable rotation of the chart by touch
binding.pieChart.setRotationEnabled(ROTATION_ENABLED);
binding.pieChart.setHighlightPerTapEnabled(HIGHLIGHT_PER_TAP_ENABLED);

binding.pieChart.animateY(2000, Easing.EaseInOutQuad); // Starter Animation

legend = binding.pieChart.getLegend();
legend.setEnabled(GUIDE_ENABLED); // To show/not show Chart Guide
legend.setDrawInside(DRAW_INSIDE);

有什么解决方案可以实现我发送的图表吗?


尝试使用minAngleForSlices参数设置最小角度,以便可以看到每个扇区并在它们之间保持一定的距离。

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

使用 MPAndroidChart 库重叠饼图标签 的相关文章

随机推荐

  • 对于有效证书,X509Certificate2.Verify() 方法始终返回 false

    我正在使用智能卡进行身份验证 SecurityTokenService 身份验证服务 仅托管在我的计算机上 智能卡具有有效的证书 并且其根证书也安装在我的计算机上的本地计算机存储中 当我使用X509Certificate2 Verify在我
  • 如何在c代码中使用tcl api

    我想在另一个 c 代码文件中使用我的 tcl 代码的一些功能 API 但我不知道如何做到这一点 特别是如何链接它们 为此 我采用了一个非常简单的 tcl 代码 其中包含一个 API 该 API 将两个数字相加并打印总和 谁能告诉我如何调用这
  • 如何使用按键绑定而不是按键侦听器

    我在用着KeyListener在我的代码 游戏或其他 中作为我的屏幕对象对用户按键输入做出反应的方式 这是我的代码 public class MyGame extends JFrame static int up KeyEvent VK U
  • 在 Git 中,如何将错误修复的提交应用到其他较新的分支?

    如果我有一个公共 Git 存储库 其中包含 3 个分支 如下所示 release to customerA U master A B C D E S T release to customerB 其中提交 B 是原始发行版本 提交 U 解决
  • Pandas DataFrame 获取索引匹配特定条件的行

    我有一个 Pandas 数据框 我需要其中索引匹配特定条件的所有行 数据框有一个多重索引 我需要第一个索引所在的行TimeStamp 在特定范围内 MultiIndex 的第 1 级是一系列 DateTime 对象 以下代码行用于检查月份是
  • Javascript 中的函数重载 - 最佳实践 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在 Javascript 中伪造函数重载的最佳方法是什么 我知道不可能像其他语言那样重载 Javascript 中的函数 如果我需要一个有两种用途的函数foo x and foo x y
  • 选择并列出子项和父项

    我需要一个 SQL 查询来执行以下复杂任务 我需要从名为的列中进行选择parent id 如果一行有 0parent id这意味着它是一个类别 它也有type栏说cat对于类别 如果一行有 1 个或多个parent id这意味着这是一条规则
  • 带复选框和 JFileChooser 的 Swing JTree

    通过使用JFileChooser我可以选择使用文件对象获取 JList 的文件和文件夹 并使用复选框显示它 现在我的要求是我想用复选框在树结构中显示选定的文件和文件夹 并且该复选框应该仅适用于根元素而不适用于所有子元素 示例 例如 我选择了
  • 运行任意Python代码的Bokeh悬停工具

    我正在使用 Bokeh 尝试创建一个图形 当用户将其数据点 悬停 在其上时 将在悬停工具中显示另一个图形 显示有关该数据点的附加信息 即 在主图中 数据点是设定间隔内的时间序列 我希望悬停工具显示该间隔内的所有数据 The 用户指南 完整代
  • 从 SD 卡创建一个可绘制对象以设置为 Android 中的背景

    我正在尝试使用 SD 卡中的图像并将其设置为相对布局的背景 我尝试过在这里和其他地方找到的其他解决方案 但它们似乎对我不起作用 这是我的代码 我已经评论了我尝试过但不起作用的其他方法 唯一对我有用的是使用 setBackgroudnReso
  • 绑定到 VisualStateManager 中控件的属性

    我在 Stackoverflow 上搜索了这个问题 但我认为其他帖子没有涵盖这个问题 在我的自定义控件中 我使用视觉状态管理器 视觉状态管理器内部有一个动画 可以对元素的高度进行动画处理 当我尝试绑定到控件属性时 我在启动时收到以下错误 附
  • 上传文件不起作用 - 需要帮助

    我正在尝试使用 WebBrowser 控件上传文件 图像 似乎无法做到这一点 需要一些帮助 这是 HTML
  • 从 servlet 访问数据

    我有一个要求 mysql 数据库只能从本地主机访问 我必须实现一个 servlet 来访问数据库 从而允许该系统中的其他服务器访问数据 servlet 将充当代理 然而 该系统由一个远程服务器组成 该服务器下载大部分数据并执行如下语句 se
  • Bash 中的 RSS 日期到纪元

    寻找 bash 行以采用 RSS 日期格式 例如 Fri 13 Sep 2013 17 16 45 GMT 并将其转换为毫秒 我已经尝试过如下的事情 它们不会在几毫秒内产生 我运行的是 Mac OS X Snow Leopard 10 6
  • 在新存储库上推送原始主错误

    我刚刚开始使用 git 和 github 我按照他们的指示进行操作 但在最后一步遇到了错误 我正在检查当前不受源代码控制的现有目录 项目大约一周前 除此之外 我的用例应该是非常普通的 这是发生的事情 git push origin mast
  • 如何隐藏行索引

    我想将此 DataFrame 写入不带索引值的 xlsx 文件 我该怎么做 writer pd ExcelWriter r D pandas xlsx today datetime datetime today header pd Mult
  • 将 1 和 0 的字符串转换为二进制值

    我正在尝试将来自 stdin 的传入 1 和 0 字符串转换为各自的二进制值 其中诸如 11110111 之类的字符串将转换为 0xF7 这看起来很微不足道 但我不想重新发明轮子 所以我想知道 C C 标准库中是否有任何东西已经可以执行这样
  • 数组中给定数字的最小窗口

    最近看到这个问题 给定 2 个数组 第二个数组包含第一个数组的一些元素 返回第一个数组中包含第二个数组的所有元素的最小窗口 Eg 给定 A 1 3 5 2 3 1 和 B 1 3 2 Output 3 5 其中 3 和 5 是数组 A 中的
  • Javascript'this'值改变,但不明白为什么

    我是一个 Javascript 新手 我正在尝试了解 OLN 我遇到的是 当从同一对象上的另一个方法调用对象方法时 被调用方法中 this 的本地值正在改变 这是我的代码 var generator generateForLevelSkil
  • 使用 MPAndroidChart 库重叠饼图标签

    我正在使用菲尔杰MPAndroid图表图书馆 implementation com github PhilJay MPAndroidChart v3 1 0 And I implemented Pie Chart Pie Chart wit