如何在 Android 中使用 MPAndroidChart 自定义饼图?

Posted

技术标签:

【中文标题】如何在 Android 中使用 MPAndroidChart 自定义饼图?【英文标题】:How to customize pie chart using MPAndroidChart in Android? 【发布时间】:2020-07-18 19:42:40 【问题描述】:

我做了什么:我正在使用MPandroidChart,我能够根据我的要求对其进行自定义,并尝试了进一步的功能来删除描述标签,并增加字体并自定义传奇。我现在拥有的是;

 <com.github.mikephil.charting.charts.PieChart
            android:id="@+id/chart"
            android:layout_
            android:layout_
            android:layout_gravity="center_horizontal"
            >

        </com.github.mikephil.charting.charts.PieChart>

公共类 PFrag 扩展片段

    float time[] = 55, 95, 30 , 360 - (55+95+30);
    String activity[] ="Jan","Feb","March","";
    PieChart pieChart;
    CircularProgressIndicator circularProgress;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
        View view = inflater.inflate(R.layout.panorama_frag,container,false);

       pieChart = view.findViewById(R.id.chart);
        setupPieChart();

        //circularProgress = view.findViewById(R.id.circular_progress);
       // circularProgress.setMaxProgress(10000);
      //  circularProgress.setCurrentProgress(5000);

        return view;
    

    private void setupPieChart()

        //pupulating list of PieEntires
        List<PieEntry> pieEntires = new ArrayList<>();
        for( int i = 0 ; i<time.length;i++)
            pieEntires.add(new PieEntry(time[i],activity[i]));
        
        PieDataSet dataSet = new PieDataSet(pieEntires,"");
        dataSet.setColors(ColorTemplate.MATERIAL_COLORS);
        PieData data = new PieData(dataSet);
        //Get the chart
        pieChart.setData(data);
        pieChart.invalidate();
        pieChart.setCenterText("50% \n ");
        pieChart.setDrawEntryLabels(false);
        pieChart.setContentDescription("");
        //pieChart.setDrawMarkers(true);
        //pieChart.setMaxHighlightDistance(34);
        pieChart.setEntryLabelTextSize(12);
        pieChart.setHoleRadius(75);

        //legend attributes
        Legend legend = pieChart.getLegend();
        legend.setForm(Legend.LegendForm.CIRCLE);
        legend.setTextSize(12);
        legend.setFormSize(20);
        legend.setFormToTextSpace(2);


    


我在寻找什么:虽然我尝试过,但似乎无法找到编辑以下功能的方法。

如何去掉右上角的“描述标签”? 如何增加图表的文字大小? 如何从图例中删除蓝色项目,使其成为默认的剩余值?

我正在寻找的只是如下图。

为了实现这一点,我在经过一番搜索后使用了 MPAndoridChart 库并停留在此处。我正在使用 Android Studio 3.6.1。我真的很感激对此的任何建议。

谢谢!


我能够解决以下两个问题:

如何去掉右上角的“描述标签”

pieChart.getDescription().setEnabled(false);

如何增加图表的文字大小? > 添加

data.setValueTextSize(10);

【问题讨论】:

我认为如果没有自定义渲染器,您将无法隐藏该项目。另外,如果你的目标是实现截图中显示的图表,我认为你最好不使用 mpandroidchart 自己做,否则太不方便了。 @Nicolas 谢谢你的建议。我明白了,我明白你的意思了。我是 Android Studio 的新手,我可以知道哪些选项可供我自己做吗?当我搜索建议时,我首先选择了这个库。 不幸的是,这既不容易也不简单,尤其是在您刚刚开始的时候。我对您的建议是继续使用 mpandroidchart,但目标是更简单的 UI。例如,您可以将其标记为“目标卡路里”或其他内容,而不是隐藏该项目。 我明白了,谢谢你的建议。也许我想考虑改变我的设计。 也许它可以帮助你。 DecoView 【参考方案1】:

要删除数据中的标签,只需使用

dataSet.setDrawValues(false)

【讨论】:

以上是关于如何在 Android 中使用 MPAndroidChart 自定义饼图?的主要内容,如果未能解决你的问题,请参考以下文章

Koltin实现动态心率曲线

如何在android中使用WCF服务?

如何在 android 应用程序中使用 OSM 地图。?有啥教程可以学习在android中使用OSM吗?

如何在 android 中使用 GraphQl?

如何在模块(Android Studio)中使用 com.android.databinding?

Android:如何在 Android 中使用 tensorflow lite 扩展图像的维度