关于MPAndroidChart RadarChart 雷达图遇到的一些问题记录。
程序员文章站
2023-12-27 09:22:21
...
项目里边柱状图 折线图 雷达图都有 雷达图是最先搞的,但却是最后搞好的。
先说结论:
一定要在最后给雷达图赋值 或者完事之后刷新一下
radarChart.setData(radarData);
如果需要柱状图与折线图的看我其他的文章
MPAndroidChart LIneChart 折线图遇到的一些问题记录。
关于MPAndroidChart BarChart 柱状图组遇到的一些问题记录。
下面老规矩 先上效果图
我遇到的问题很多 现在弄好了 不想还原了
主要问题是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>
但我的实际效果图出来后,雷达图上下都展示不出来,类似于这样的。
重要的事再说一遍
一定要在最后给雷达图赋值 或者完事之后刷新一下
以下代码奉上,注释很全,放心使用
/**
* 设置雷达图数据
*
* @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);
}
}