MPAndroidChart图例定制

Zia*_*Zia 11 android pie-chart mpandroidchart

我正在使用MPAndroidChart库.我想要MPAndroidChart中的自定义图例.在MPAndroidChart库中,我试图设置图例的位置.通过给定代码legend.setPosition(LegendPosition.BELOW_CHART_CENTER)但无法执行此操作.我必须设置图例如下图所示

帮助将是欣赏 在此输入图像描述

Ama*_*ila 10

请查找给定的答案MPAndroidChart - Legend标签正在被切断.我已经根据你的问题提供了答案.寻找给定代码肯定会帮助你.您必须按照以下步骤使用其图例颜色和标签实现自定义图例:

步骤1

Legend legend = mChart.getLegend();
Run Code Online (Sandbox Code Playgroud)

第2步

int colorcodes[] = legend.Colors();
Run Code Online (Sandbox Code Playgroud)

第3步

for (int i = 0; i <  legend.Colors().length-1; i++) {
 .....
 .....
 }
Run Code Online (Sandbox Code Playgroud)

第4步

然后你必须采取水平或垂直的一个布局,并获得图例颜色代码和图例标签,并根据图例长度创建布局和标签.代码示例如下:

        LinearLayout.LayoutParams parms_left_layout = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        parms_left_layout.weight = 1F;
        LinearLayout left_layout = new LinearLayout(context);
        left_layout.setOrientation(LinearLayout.HORIZONTAL);
        left_layout.setGravity(Gravity.CENTER);
        left_layout.setLayoutParams(parms_left_layout);

        LinearLayout.LayoutParams parms_legen_layout = new LinearLayout.LayoutParams(
                20, 20);
        parms_legen_layout.setMargins(0, 0, 20, 0);
        LinearLayout legend_layout = new LinearLayout(context);
        legend_layout.setLayoutParams(parms_legen_layout);
        legend_layout.setOrientation(LinearLayout.HORIZONTAL);
        legend_layout.setBackgroundColor(colorcodes[i]);
        left_layout.addView(legend_layout);

        TextView txt_unit = new TextView(context);
        txt_unit.setText(legend.getLabel(i));
       left_layout.addView(txt_unit);

        LinearLayout.LayoutParams parms_middle_layout = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        parms_middle_layout.weight = 1F;
        LinearLayout middle_layout = new LinearLayout(this);
        middle_layout.setOrientation(LinearLayout.HORIZONTAL);
        middle_layout.setGravity(Gravity.CENTER);
        middle_layout.setLayoutParams(parms_middle_layout);

        TextView txt_leads = new TextView(this);
        txt_leads.setText("450");
        middle_layout.addView(txt_leads);

        LinearLayout.LayoutParams parms_right_layout = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        parms_right_layout.weight = 1F;
        LinearLayout right_layout = new LinearLayout(this);
        right_layout.setOrientation(LinearLayout.HORIZONTAL);
        right_layout.setGravity(Gravity.CENTER);
        right_layout.setLayoutParams(parms_right_layout);

        TextView txt_leads_percentage = new TextView(this);
        txt_leads_percentage.setText(munit_percentage_list.get(i) + "");
        right_layout.addView(txt_leads_percentage);

        childlayout.addView(left_layout);
        childlayout.addView(middle_layout);
        childlayout.addView(right_layout);
Run Code Online (Sandbox Code Playgroud)

然后将您(在运行时创建的子布局)添加到主布局.


Phi*_*oda 8

在你的情况下,我建议你禁用Legend图表绘制的,而是提出自己的实现.

chart.getLegend().setEnabled(false)
Run Code Online (Sandbox Code Playgroud)

在上面显示的情况下,您可能需要ListView从图表Legend对象获取数据并显示它.

当你看一下Legend类时,你会发现它有颜色和标签的成员变量.

您可以检索这些数组(getColors(),getLegendLabels())并使用它们显示在ListView.


小智 6

用于设置自定义图例:

public void setLegends(){

Legend l = holder.pieChart.getLegend();

l.getEntries();

l.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);

l.setYEntrySpace(10f);

l.setWordWrapEnabled(true);

LegendEntry l1=new LegendEntry("Male",Legend.LegendForm.CIRCLE,10f,2f,null,Color.YELLOW);
LegendEntry l2=new LegendEntry("Female", Legend.LegendForm.CIRCLE,10f,2f,null,Color.RED);

l.setCustom(new LegendEntry[]{l1,l2});

l.setEnabled(true);

}
Run Code Online (Sandbox Code Playgroud)