MPChartAndroid的初体验,X轴和Y轴标签自定义
来源:互联网 发布:软件外包网站有哪些 编辑:程序博客网 时间:2024/06/05 02:42
一 、项目要用个曲线图,于是就使用了 MPChartAndroid
1.使用方式很简单
1.添加依赖
dependencies { compile ‘com.github.PhilJay:MPAndroidChart:v3.0.2’
}
2.项目的build.gradle添加
allprojects { repositories { maven { url "https://jitpack.io" } }}
3.界面的xml布局直接使用
<com.github.mikephil.charting.charts.LineChart android:id="@+id/chart1" android:layout_width="match_parent" android:layout_height="90dp" android:layout_alignParentBottom="true" android:layout_marginBottom="12dp" />
4.代码封装的非常完美,想要什么属性调用API进行设置就行了,github下载的事列代码没有中文注释,我就进行各种试。
mLineChart.setLogEnabled(true);//打印日志 //取消描述文字 mLineChart.getDescription().setEnabled(false); mLineChart.setNoDataText("没有数据");//没有数据时显示的文字 mLineChart.setNoDataTextColor(Color.WHITE);//没有数据时显示文字的颜色 mLineChart.setDrawGridBackground(false);//chart 绘图区后面的背景矩形将绘制 mLineChart.setDrawBorders(false);//是否禁止绘制图表边框的线 mLineChart.setBorderColor(Color.WHITE); //设置 chart 边框线的颜色。 mLineChart.setBorderWidth(3f); //设置 chart 边界线的宽度,单位 dp。 mLineChart.setTouchEnabled(true); //能否点击 mLineChart.setDragEnabled(false); //能否拖拽 mLineChart.setScaleEnabled(false); //能否缩放 mLineChart.animateX(1000);//绘制动画 从左到右 mLineChart.setDoubleTapToZoomEnabled(false);//设置是否可以通过双击屏幕放大图表。默认是true mLineChart.setHighlightPerDragEnabled(false);//能否拖拽高亮线(数据点与坐标的提示线),默认是true mLineChart.setDragDecelerationEnabled(false);//拖拽滚动时,手放开是否会持续滚动,默认是true(false是拖到哪是哪,true拖拽之后还会有缓冲) MyMarkerView mv = new MyMarkerView(mActivity, R.layout.custom_marker_view); mv.setChartView(mLineChart); // For bounds control mLineChart.setMarker(mv); //设置 marker ,点击后显示的功能 ,布局可以自定义 XAxis xAxis = mLineChart.getXAxis(); //获取x轴线 xAxis.setDrawAxisLine(true);//是否绘制轴线 xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//设置x轴的显示位置 xAxis.setTextSize(12f);//设置文字大小 xAxis.setAxisMinimum(0f);//设置x轴的最小值 //` xAxis.setAxisMaximum(31f);//设置最大值 // xAxis.setLabelCount(10); //设置X轴的显示个数 xAxis.setAvoidFirstLastClipping(false);//图表将避免第一个和最后一个标签条目被减掉在图表或屏幕的边缘 xAxis.setAxisLineColor(Color.WHITE);//设置x轴线颜色 xAxis.setAxisLineWidth(0.5f);//设置x轴线宽度 YAxis leftAxis = mLineChart.getAxisLeft(); YAxis axisRight = mLineChart.getAxisRight(); leftAxis.enableGridDashedLine(10f, 10f, 0f); //设置Y轴网格线条的虚线,参1 实线长度,参2 虚线长度 ,参3 周期 leftAxis.setGranularity(20f); // 网格线条间距 axisRight.setEnabled(false); //设置是否使用 Y轴右边的 leftAxis.setEnabled(true); //设置是否使用 Y轴左边的 leftAxis.setGridColor(Color.parseColor("#7189a9")); //网格线条的颜色 leftAxis.setDrawLabels(true); //是否显示Y轴刻度 leftAxis.setStartAtZero(true); //设置Y轴数值 从零开始 leftAxis.setDrawGridLines(true); //是否使用 Y轴网格线条 leftAxis.setTextSize(12f); //设置Y轴刻度字体 leftAxis.setTextColor(Color.WHITE); //设置字体颜色 leftAxis.setAxisLineColor(Color.WHITE); //设置Y轴颜色 leftAxis.setAxisLineWidth(0.5f); leftAxis.setDrawAxisLine(true);//是否绘制轴线 leftAxis.setMinWidth(0f); leftAxis.setMaxWidth(200f); leftAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 Legend l = mLineChart.getLegend();//图例 l.setEnabled(false); //是否使用 图例
5.LineChart 设置完成,接下来是数据的设置
private void setLineChartDate() { mValues = new ArrayList<>(); mValues.add(new Entry(0, 10)); mValues.add(new Entry(1, 15)); mValues.add(new Entry(2, 25)); mValues.add(new Entry(3, 19)); mValues.add(new Entry(4, 25)); mValues.add(new Entry(5, 16)); mValues.add(new Entry(6, 40)); mValues.add(new Entry(7, 27)); if (mValues.size() == 0) return; LineDataSet set1; //判断图表中原来是否有数据 if (mLineChart.getData() != null && mLineChart.getData().getDataSetCount() > 0) { //获取数据1 set1 = (LineDataSet) mLineChart.getData().getDataSetByIndex(0); set1.setValues(mValues); //刷新数据 mLineChart.getData().notifyDataChanged(); mLineChart.notifyDataSetChanged(); } else { //设置数据1 参数1:数据源 参数2:图例名称 set1 = new LineDataSet(mValues, "测试数据1"); set1.setMode(LineDataSet.Mode.CUBIC_BEZIER); set1.setColor(Color.WHITE); set1.setCircleColor(Color.parseColor("#AAFFFFFF")); set1.setHighLightColor(Color.WHITE);//设置点击交点后显示交高亮线的颜色 set1.setHighlightEnabled(true);//是否使用点击高亮线 set1.setDrawCircles(true); set1.setValueTextColor(Color.WHITE); set1.setLineWidth(1f);//设置线宽 set1.setCircleRadius(2f);//设置焦点圆心的大小 set1.setHighlightLineWidth(0.5f);//设置点击交点后显示高亮线宽 set1.enableDashedHighlightLine(10f, 5f, 0f);//点击后的高亮线的显示样式 set1.setValueTextSize(12f);//设置显示值的文字大小 set1.setDrawFilled(true);//设置使用 范围背景填充 set1.setDrawValues(false); //格式化显示数据 final DecimalFormat mFormat = new DecimalFormat("###,###,##0"); set1.setValueFormatter(new IValueFormatter() { @Override public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { return mFormat.format(value); } }); if (Utils.getSDKInt() >= 18) { // fill drawable only supported on api level 18 and above Drawable drawable = ContextCompat.getDrawable(mActivity, R.color.translucence); set1.setFillDrawable(drawable);//设置范围背景填充 } else { set1.setFillColor(R.color.translucence); } ArrayList<ILineDataSet> dataSets = new ArrayList<>(); dataSets.add(set1); // add the datasets //创建LineData对象 属于LineChart折线图的数据集合 LineData data = new LineData(dataSets); // 添加到图表中 mLineChart.setData(data); //绘制图表 mLineChart.invalidate(); } }
效果展示
新的需求,X轴和Y轴需要自定义,经过研究可以这样设置
1.设置数据传入X轴要显示的标签
mValues = new ArrayList<>(); mValues.add(new Entry(0, 10,"08-1")); mValues.add(new Entry(1, 15,"")); mValues.add(new Entry(2, 25,"")); mValues.add(new Entry(3, 19,"")); mValues.add(new Entry(4, 25,"08-10")); mValues.add(new Entry(5, 16,"")); mValues.add(new Entry(6, 40,"")); mValues.add(new Entry(7, 24,"")); mValues.add(new Entry(8, 27,"08-21"));
1.设置X轴和Y轴适配器
xAxis.setValueFormatter((value, axis) -> mValues.get((int) value).getData()+""); leftAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) { return "¥"+ value; }
1.点击提示的marker适配器
public void refreshContent(Entry e, Highlight highlight) { if (e instanceof CandleEntry) { CandleEntry ce = (CandleEntry) e; tvContent.setText("¥" + Utils.formatNumber(ce.getHigh(), 0, true)); } else { tvContent.setText("¥" + Utils.formatNumber(e.getY(), 0, true)); } super.refreshContent(e, highlight); }
效果如下
希望能对你有所帮助~
阅读全文
1 0
- MPChartAndroid的初体验,X轴和Y轴标签自定义
- 使用MPchartAndroid 曲线 计算y 轴的算法
- MPChartAndroid轴线标签自定义的一些显示BUG
- matlab-基础 给plot输出的图像加上x,y轴的标签
- x/y/z轴
- ZedGraph 自定义 X轴 Y轴 标注 画虚线
- C# MSChart 中柱状图和X轴自定义标签
- 获得鼠标的X轴Y轴
- 自定义标签的另类体验
- Android scrollBy(x,y)和scrollTo(x,y)的区别
- JPS自定义标签初体验。
- FusionCharts Free X轴标签长重叠 Y轴标签不显示 乱码
- echarts-设置折线样式和X轴和Y轴的分割线样式
- echarts-设置折线样式和X轴和Y轴的分割线样式
- echarts-设置折线样式和X轴和Y轴的分割线样式
- 一张图看懂TranslationX,Y和X,Y的区别
- 如何把CAD中的x轴和y轴互换
- echarts-去掉X轴、Y轴和网格线
- (报错)backslash-newline at end of file
- java的set数据类型,是什么?怎么用?
- Algorithms 练习1.1.13
- centos5.x 更新源
- 西部数据硬盘官网查询
- MPChartAndroid的初体验,X轴和Y轴标签自定义
- fabirc1.0商业正式版本源码解析4——配置系统
- 漫游Kafka实战篇之客户端编程实例
- Git学习
- 固定宽度边栏另一边自适应的布局(自己加了个改善)
- 性能测试,监视
- virtualBox中xp系统无法与宿主主机进行粘贴、复制!
- 软考第一站——J2SE视频
- 解决centos6安装openstack-packstack时的python依赖错误