【问题标题】:Custom MPAndroidChart for Android适用于 Android 的自定义 MPAndroidChart
【发布时间】:2017-02-17 06:25:57
【问题描述】:

我正在使用这个库https://github.com/PhilJay/MPAndroidChart 在我的项目中制作条形图,我已经尝试并关注了 wiki,但仍然无法解决我留下的一些问题。我正在尝试删除右侧的值(4,3,2,1,0)和下面的标签“BarDataSet”以及左侧的颜色块。最后,我尝试在条上设置的颜色不是我定义的。

我做了什么:

    List<BarEntry> entries = new ArrayList<>();
    entries.add(new BarEntry(0f, 55f));
    entries.add(new BarEntry(1f, 80f));
    entries.add(new BarEntry(2f, 60f));
    entries.add(new BarEntry(3f, 50f));
    entries.add(new BarEntry(4f, 40f));

    BarDataSet set = new BarDataSet(entries, "BarDataSet");
    BarData data = new BarData(set);
    data.setBarWidth(0.9f); // set custom bar width
    barChart.setData(data);
    barChart.setFitBars(true); // make the x-axis fit exactly all bars
    barChart.invalidate(); // refresh
    barChart.getAxisLeft().setEnabled(false);
    barChart.getAxisRight().setEnabled(false);
    barChart.getXAxis().setDrawGridLines(false);
    barChart.getDescription().setEnabled(false);
    set.setColors(R.color.star_bar);

还有我现在拥有的:

我想删除右边的标签(4 到 0)和“BarDataSet”。 我为 R.color.star_bar 定义的颜色是黄色的,但不知何故它显示为紫色。

【问题讨论】:

    标签: android mpandroidchart


    【解决方案1】:

    删除线:

    set.setColors(R.color.star_bar);
    

    然后,您必须添加以下行:

       barChart.getLegend().setEnabled(false); // hide the legend
        set.setColor(ContextCompat.getColor(this, R.color.colorAccent)); // set yellow color
    
        // hide the labels
        barChart.getXAxis().setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
    
                return "";
            }
        });
    

    【讨论】:

    • 我认为设置 barChart.getXAxis().setDrawLabels(false);,会比让值格式化程序返回“”更好。
    【解决方案2】:

    如果右侧 0 到 4 是条形值,则将其删除设置:

    data.setDrawValues(false);
    

    如果它们是标签,则尝试:

    barChart.getXAxis().setDrawLabels(false);
    

    “BarDataSet”是图例,您可以使用以下方法隐藏它:

     barChart.getLegend().setEnabled(false);
    

    您的代码中还有一件事是您首先使图表无效,然后设置一些属性,但我认为在最后使图表无效总是更好,所以将下面的行放在最后并尝试:

    barChart.invalidate(); 
    

    【讨论】:

    • 感谢您的回复,barChart.getLegend().setEnabled(false) 效果理想,但是右侧的 0 到 4 不是条形值,正如您在我的图像中看到的那样,仍然存在0 的值。我认为每当我添加条目时它们是位置,从 0f 到 4f ?并感谢您对 barChart.invalidate() 的提醒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多