官方 :https://github.com/PhilJay/MPAndroidChart
文档:https://github.com/PhilJay/MPAndroidChart/wiki
精简的文档
1.配置以及快速开始
allprojects { repositories { maven { url "https://jitpack.io" } } }
dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3' }
xml
<com.github.mikephil.charting.charts.LineChart android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="match_parent" />
java
LineChart chart = (LineChart) findViewById(R.id.chart);
获得曲线数据
YourData[] dataObjects = ...; List<Entry> entries = new ArrayList<Entry>(); for (YourData data : dataObjects) { // turn your data into Entry objects entries.add(new Entry(data.getValueX(), data.getValueY())); }
放入dataset
LineDataSet dataSet = new LineDataSet(entries, "Label"); // add entries to dataset dataSet.setColor(...); dataSet.setValueTextColor(...); // styling, ...
放入lineData后,放入图像
LineData lineData = new LineData(dataSet); chart.setData(lineData); chart.invalidate(); // refresh
2.触摸手势相关
setTouchEnabled(boolean enabled)
: 是否允许触摸交互setDragEnabled(boolean enabled)
: 是否允许拖动setScaleEnabled(boolean enabled)
: 是否允许缩放setScaleXEnabled(boolean enabled)
: 是否允许x轴缩放setScaleYEnabled(boolean enabled)
: 是否允许y轴缩放setPinchZoom(boolean enabled)
: 是否允许放大(true:允许 false:可以x,y单独放大)setDoubleTapToZoomEnabled(boolean enabled)
: 是否双击放大
3.高亮设置(略过)
4. 关于轴(x,y共有方法)
组成:
- The labels :标签(线的名字)
- A so called "axis-line" (轴)
- The "grid-lines", (网格线)
LimitLines
, (特殊的线:可以用于最高值最小值的线)
绘制:
setEnabled(boolean enabled)
: 是否绘制此轴(false:任何一个组成都不会绘制)setDrawLabels(boolean enabled)
: 是否绘制标签setDrawAxisLine(boolean enabled)
: 是否绘制轴setDrawGridLines(boolean enabled)
: 是否绘制网格线
自定义轴的最大最小,标签上下相关
setAxisMaximum(float max)
: 设置最大值,(data超出,不予计算)resetAxisMaximum()
: 撤销设置的最大值(可以重新调用setAxisMaximum )setAxisMinimum(float min)
:设置最小值,(data超出,不予计算)resetAxisMinimum()
: 撤销设置的最小值(可以重新调用setAxisMinimum)setStartAtZero(boolean enabled)
: 弃用setInverted(boolean enabled)
: 倒置轴,(轴方向上值从大到小)setSpaceTop(float percent)
: 曲线最高点距离轴最高点的距离 ,(以轴长的百分比计算)setSpaceBottom(float percent)
: 曲线最低点距离轴最低点的距离 ,(以轴长的百分比计算)setShowOnlyMinMax(boolean enabled)
: 是否只显示最大最小坐标setLabelCount(int count, boolean force)
: 设置坐标标签的个数(第二个参数false:不严格按照count计数。true:严格计数,可能分布不均)setPosition(YAxisLabelPosition pos)
: 坐标标签绘制位置.(INSIDE_CHART / OUTSIDE_CHART).setGranularity(float gran)
:设置y轴的最小间隔 防止放大时出现重复setGranularityEnabled(boolean enabled)
: 是否弃用颗粒设置(setGranularity)
美化轴
setTextColor(int color)
: 坐标标签 字体颜色setTextSize(float size)
: 坐标标签 字体大小setTypeface(Typeface tf)
: 坐标标签 字体大小setGridColor(int color)
: 网格线颜色setGridLineWidth(float width)
: 网格线宽度setAxisLineColor(int color)
: 轴线颜色setAxisLineWidth(float width)
: 轴线宽度enableGridDashedLine(float lineLength, float spaceLength, float phase)
: 网格线为虚线 长度,间隔,起点
Limit Lines
addLimitLine(LimitLine l)
: 添加removeLimitLine(LimitLine l)
: 删除- 可以添加删除不止一条
setDrawLimitLinesBehindData(boolean enabled)
:默认false (false:先绘制limitline再绘制曲线)
代码示例 :添加一条 140的线
YAxis leftAxis = chart.getAxisLeft(); LimitLine ll = new LimitLine(140f, "Critical Blood Pressure"); ll.setLineColor(Color.RED); ll.setLineWidth(4f); ll.setTextColor(Color.BLACK); ll.setTextSize(12f); // .. and more styling options leftAxis.addLimitLine(ll);