当前位置: 首页 > 知识库问答 >
问题:

MPAndroidChart自定义水平条形图

商天逸
2023-03-14

这是柱状图的图片。正如您所看到的,存在对齐问题,条形图没有与标签对齐,尤其是在中间部分。此外,我希望底部轴显示10的条形图,而不是1.2、1.4、1.6等,因为不会有任何小数,所以它没有用处。我还希望每个条的值在末尾显示为一个数字,以显示每个条的总计数。

图表https://imgur.com/gallery/ThHx1eJ图片

样式设置

 // All JSON entries form the MYSQL server are parsed into an ArrayList.
    moodEntries = new ArrayList<>();

    // For loop which dynamically adds all entries to the ArrayList
    for (MoodStatsPieChartModel moodLogPieChartResponse : moodStatsPieChartModels) {

        moodEntries.add(new BarEntry(moodLogPieChartResponse.getMoodBefore(), moodLogPieChartResponse.getMoodCount()));
    }
 -- the .getmoodBefore() will be an int value from 1 - 18 which represents a mood 
    and the .getmoodCount() just totals how much of each mood. 
    This data is stored in the internal sqlite database.
}

 // custom X-axis labels
    String[] values = new String[] { "Excited", "Happy", "Confident", "Proud", "Content", "Fine", "Relaxed", "Calm", "Tired", "Guilty", "Sad", "Depressed", "Embarrassed", "Upset", "Stressed", "Anxious", "Confused", "Disgusted"};

    BarDataSet barDataSet = new BarDataSet(moodEntries, "");
    barDataSet.setColors(color);
    barDataSet.setValueTextSize(16f);
    barDataSet.setValueTextColor(Color.BLACK);

    BarData data = new BarData(barDataSet);
    //barData.setBarWidth(1f);
    data.setValueTextSize(10f);


    XAxis xAxis = chart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setLabelCount(values.length, true);
    xAxis.setDrawLabels(true);
    xAxis.setCenterAxisLabels(true);
    xAxis.setValueFormatter(new MyXAxisValueFormatter(values));
    xAxis.setGranularity(10f);
    //xAxis.setGranularityEnabled(true);
    //xAxis.setDrawGridLines(false);
    //xAxis.setDrawAxisLine(false);
    //xAxis.setDrawLabels(true);
    //xAxis.setAxisMaximum(values.length);
    //barChart.getXAxis().setDrawGridLines(false);
    //xAxis.setAxisMinimum(values.length);


    // Top Axis
    YAxis yAxis = chart.getAxisLeft();
    yAxis.setDrawAxisLine(false);
    yAxis.setDrawGridLines(false);
    //yAxis.setGranularity(1f);
    yAxis.setDrawLabels(false);
    //yAxis.setAxisMaximum(0f);
    //yAxis.setDrawGridLinesBehindData(false);


    // Bottom Axis
    YAxis yAxisBottom = chart.getAxisRight();
    yAxisBottom.setDrawGridLines(false);
    yAxisBottom.setDrawAxisLine(false);
    //yAxisBottom.setGranularity(10f);
    //yAxisBottom.setDrawGridLinesBehindData(false);
    //yAxisBottom.setDrawLabels(true);
    //yAxisBottom.setAxisMinimum(2f);


    Legend l = chart.getLegend();
    l.setEnabled(false);
    chart.setVisibility(View.VISIBLE);
    chart.animateXY(1000, 1000);
    chart.getDescription().setEnabled(false);
    chart.setExtraOffsets(-10, -10, -10, -10);
    chart.setDrawGridBackground(false);
    chart.setDrawBarShadow(false);
    chart.setDrawValueAboveBar(true);
    //chart.setFitBars(true);
    //chart.setMaxVisibleValueCount(100);



    chart.setData(data);
    chart.invalidate();

共有1个答案

施辉
2023-03-14

你可以试试这个:

public class ValFormatter extends ValueFormatter {


    @Override
    public String getFormattedValue(float value) {
        if(value == Math.round(value)){ // value is an integer?
            return String.valueOf((int) value);
        }else{
            return "";
        }
    }
}

yAxisBottom.setValueFormatter(new ValFormatter())

因为yAxis向您显示了一个范围。这样您就可以修复它。

您可以尝试以下行来获取bar的值:

data.setValueTextSize(10f)
data.setDrawValues(true)
 类似资料:
  • 我正在使用MPAndroidChart库。在条形图中,默认情况下,所有条形图都是垂直的(自下而上),如何水平显示?

  • 我试图创建一个进度条,当它水平前进时,进度条本身会以垂直旋转的方式进行动画。我通过以下方式成功地使用了我的进度绘图功能: 这是我的画: 但我希望它在前进的过程中有一个微妙的滚动效果。所以看起来垂直线在向后移动。你明白了吗?非常感谢您的帮助。谢谢 编辑:我尝试创建一个动画列表作为我的进度绘图,但我仍然不能看到动画。动画列表可以在进度项目的剪辑中吗?

  • 我试图设置一个固定的范围为单条,水平条形图在Chart.JS 标记数组仅在垂直轴上工作,但我希望在X轴上有一组固定的标签。 示例:https://altonwells.webflow.io/chart-js

  • 我正试图实现类似的图表。例如,三月份通过卡和现金(40美元现金和38美元卡支付)收取的出租车运输付款。我需要用主色和主色的浅色版本显示那个栏。我有两个问题什么样的图表能满足我的需求?如何制作具有相同颜色(深蓝色和浅蓝色)两种不同色调的酒吧? 我已经尝试了以下代码,我确信数据集没有像我前面解释的那样包括卡和现金选项。 谢谢你。

  • 本文向大家介绍Android自定义水平进度条的圆角进度,包括了Android自定义水平进度条的圆角进度的使用技巧和注意事项,需要的朋友参考一下 平时项目中经常用到自定义进度条样式,我们一般实现的也是下面的第一种,至于第二种的圆角进度,网上介绍的资料也不是很多,这里一起展示一下这两种的实现。 下面开始看代码,先从主界面布局开始看起: 两个进度条布局,然后是不同的progressDrawable布局:

  • 如贴图所示,我正在尝试使用MPAndroid libraray的水平条形图,一切都很好,除了在图的末尾有一条十字线,如图所示。我还附上了图表样式的代码。请有人帮忙纠正我代码中的错误。 MpChart错误的图像: