欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于MPAndroidChart RadarChart 雷达图遇到的一些问题记录。

程序员文章站 2023-12-27 09:22:21
...

项目里边柱状图 折线图 雷达图都有 雷达图是最先搞的,但却是最后搞好的。

先说结论:

一定要在最后给雷达图赋值 或者完事之后刷新一下

radarChart.setData(radarData);

如果需要柱状图与折线图的看我其他的文章

MPAndroidChart LIneChart 折线图遇到的一些问题记录。

关于MPAndroidChart BarChart 柱状图组遇到的一些问题记录。

下面老规矩 先上效果图

关于MPAndroidChart RadarChart 雷达图遇到的一些问题记录。

我遇到的问题很多 现在弄好了 不想还原了

主要问题是Y轴显示不全 下面是我的xml文件 高度为200

                  <FrameLayout
                        android:layout_width="match_parent"
                        android:layout_height="200dp"
                        android:layout_marginTop="@dimen/ten">

                        <com.github.mikephil.charting.charts.RadarChart
                            android:layout_centerInParent="true"
                            android:id="@+id/radar_chart"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent">

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

                    </FrameLayout>

但我的实际效果图出来后,雷达图上下都展示不出来,类似于这样的。

关于MPAndroidChart RadarChart 雷达图遇到的一些问题记录。

重要的事再说一遍

一定要在最后给雷达图赋值 或者完事之后刷新一下

以下代码奉上,注释很全,放心使用

/**
     * 设置雷达图数据
     *
     * @param beans
     */
    private void initRadarChart(final List<TopicAnalysisEntity.RadarChartBean> beans) {

        if (beans != null){
            List list = new ArrayList<>();
            for (int i = 0; i < beans.size(); i++) {
                //数据值区间为 0 ~ 1 之间的小数
                if (beans.get(i).getRate() <= 0) {
                    list.add(new RadarEntry(0.1f));
                } else {
                    list.add(new RadarEntry((float) (beans.get(i).getRate())));
                }
            }

            //大字的颜色(中心点和各顶点的连线)
            radarChart.setWebColor(getResources().getColor(R.color.tv_default_gray));
            //所有五边形的颜色
            radarChart.setWebColorInner(getResources().getColor(R.color.tv_default_gray));
            //整个控件的背景颜色
            radarChart.setBackgroundColor(Color.TRANSPARENT);

            //X轴设置
            XAxis xAxis = radarChart.getXAxis();
            //X轴字体颜色
            xAxis.setTextColor(getResources().getColor(R.color.tv_default_gray));
            //X轴字体大小
            xAxis.setTextSize(12);
            //自定义X轴坐标描述(也就是五个顶点上的文字,默认是0、1、2、3、4)
            xAxis.setValueFormatter(new IAxisValueFormatter() {
                @Override
                public String getFormattedValue(float v, AxisBase axisBase) {
                    if (v < beans.size()) {
                        return beans.get((int) v).getLawName();
                    }
                    return "";
                }
            });

            //Y轴设置
            YAxis yAxis = radarChart.getYAxis();
            //是否绘制Y轴坐标点  和雷达框数据一般不同时存在 否则显得很挤 默认为true
            yAxis.setDrawLabels(false);
            //Y轴坐标数据的颜色
            yAxis.setTextColor(Color.GRAY);
            //Y轴最大数值
            yAxis.setAxisMaximum(1f);
            //Y轴最小数值 Y轴最小值不设置会导致数据中最小值默认成为Y轴最小值
            yAxis.setAxisMinimum(0);
            //Y轴坐标的个数    第二个参数一般填false     true表示强制设置标签数 可能会导致X轴坐标显示不全等问题
            yAxis.setLabelCount(beans.size(), false);

            //是否显示右下角描述
            radarChart.getDescription().setEnabled(false);
            //图例
            Legend legend = radarChart.getLegend();
            //是否显示图例
            legend.setEnabled(false);
            //图例的位置
            legend.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);

            //赋值
            RadarDataSet radarDataSet = new RadarDataSet(list, "掌握情况分析");
            //线条颜色
            radarDataSet.setColor(mContext.getResources().getColor(R.color.tv_default_blue));
            //填充颜色
            radarDataSet.setFillColor(mContext.getResources().getColor(R.color.tv_default_blue));
            //是否填充颜色
            radarDataSet.setDrawFilled(true);
            //填充颜色透明度
            radarDataSet.setFillAlpha(30);
            //线条宽度
            radarDataSet.setLineWidth(1f);
            //是否绘制雷达框上对每个点的数据的标注 和Y轴坐标点一般不同时存在 否则显得很挤 默认为true
            radarDataSet.setDrawValues(false);
            //数据值得字体大小
            radarDataSet.setValueTextSize(12);
            //数据值的字体颜色
            radarDataSet.setValueTextColor(Color.CYAN);
            RadarData radarData = new RadarData(radarDataSet);
            radarChart.setData(radarData);
        }

    }

 

上一篇:

下一篇: