MPAndroidChart图表库踩坑X轴自定义
来源:互联网 发布:java 图片压缩框架 编辑:程序博客网 时间:2024/05/18 16:37
项目中要用到图表UI,最火的就是MPAndroidChart图标库,自己也是折腾了一下,写点自己的坑,先来张效果图!![效果图](http://img.blog.csdn.net/20170310205746902?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrYWk3MjE3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 自己踩坑的地方是x轴要显示字符串 网上Mp类库的用法都很全,有一些是老版本,我用的是3.X版本一些方法在别人的bolg里面没有或者发生改变,自己是看bolg或者去github,Mp项目中看别人的Issues,一步一步实现的x轴显示字符串 首先第一个坑是,x轴中显示字符串,自定义X轴format代码如下
public class MyXFormatter implements IAxisValueFormatter { private String[] mValues; public MyXFormatter(String[] values) { this.mValues = values; } private static final String TAG = "MyXFormatter"; @Override public String getFormattedValue(float value, AxisBase axis) { // "value" represents the position of the label on the axis (x or y) Log.d(TAG, "----->getFormattedValue: "+value); return mValues[(int) value % mValues.length]; }}
第一个坑是我设置Entry,x,y轴值出现错误,老是报数组越界,后来打log调试才发现问题
实实现图表代码如下:
public class LineChartTestActivity extends AppCompatActivity { private LineChart lineChart; protected String[] values = new String[]{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec" }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_line_test); lineChart = ((LineChart) findViewById(R.id.lineChart)); lineChart.getDescription().setEnabled(false); //自定义x轴显示 MyXFormatter formatter = new MyXFormatter(values); XAxis xAxis = lineChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED); xAxis.setDrawAxisLine(false); xAxis.setDrawGridLines(false); //显示个数 xAxis.setLabelCount(12); xAxis.setValueFormatter(formatter); //1 创建类型的列表Entry ,将保留您的值: ArrayList<Entry> valsComp1 = new ArrayList<Entry>(); //2) 然后,给 lists 集合添加 Entry 对象。 //确保 Entry 对象包含的 index 都是正确的 (对于x轴来说)。 for (int i = 0; i < 12; i++) { valsComp1.add(new Entry(i, (float) (50.000f + Math.random() * 20))); } //3 有了 Entry 对象的 lists 集合,再创建 LineDataSet 对象: LineDataSet setComp1 = new LineDataSet(valsComp1, "Company 1"); //4 DataSets 集合和 x-axis entries 集合,来创建我们的 ChartData 对象: ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>(); dataSets.add(setComp1); LineData data = new LineData(dataSets); data.setDrawValues(true); lineChart.setData(data); lineChart.invalidate(); }}
第二个坑爹的是,我要x轴显示每个月,我知道api中肯定有这个方法,去网上找了好久,发现2.X版本有这个设置方法,3.0中没有,后开去githun中Issues中查找,方法改了 成了这 //显示个数 xAxis.setLabelCount(12);
对于这次折腾,我感觉解决问题方法还算正确, x轴设置字符串显示,写类库的人早就想到了,自己去查api就好,一些版本升级后,方法没有,肯定有新的方法,再次说明,github是最好的学习工具
2 0
- MPAndroidChart图表库踩坑X轴自定义
- MPAndroidChart 3.X 自定义柱形图
- Android图表控件MPAndroidChart——源码修改实现曲线图X轴直尺刻度样式
- 3.0以后mpandroidchart自定义X轴——以折线图为例
- MPAndroidChart绘制图表
- Android统计图表MPAndroidChart
- Android统计图表MPAndroidChart
- Android统计图表MPAndroidChart
- android 统计图表MPAndroidChart
- Android统计图表MPAndroidChart
- Android统计图表MPAndroidChart
- Android统计图表MPAndroidChart
- 笑谈Android图表------MPAndroidChart
- Android图表利器-MPAndroidChart
- Android统计图表MPAndroidChart
- 笑谈Android图表-MPAndroidChart
- Android统计图表MPAndroidChart
- MPAndroidChart X轴文字斜着显示
- markdown语法大全
- SQL语句WHERE
- SpringMVC上传文件
- 文档
- poi生成excel文档
- MPAndroidChart图表库踩坑X轴自定义
- POJ
- CI的CSRF防范原理及注意事项
- mr配置es
- 大型网站架构演化(三)——使用缓存改善网站性能
- ubuntu安装composer
- Web开发之JS事件
- C# 下利用代码创建按钮、定时器和标签
- iframe中的modal动态为页面添加元素后页面无法滚动