日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中MPAndroidChart图表工具的常用方法(汇总)

發布時間:2024/1/1 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中MPAndroidChart图表工具的常用方法(汇总) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇主要是MPAndroidChart圖表工具常用方法的匯總,其他不清楚的可以去GitHub上的文檔查詢。

強大的圖表繪制工具,支持折線圖、面積圖、散點圖、時間圖、柱狀圖、條圖、餅圖、氣泡圖、圓環圖、范圍(高至低)條形圖、網狀圖等;支持圖的拖拽縮放;支持 Android 2.2 以上,支持橫縱軸縮放,多指縮放,展現動畫、高亮、保存到 sdcard、從文件讀取圖表
項目地址:https://github.com/PhilJay/MPAndroidChart

效果圖如下:


?

?

以下為一些常用的方法:

以曲線圖為例
依賴:project build.gradle?中
allprojects {
? ? repositories {
? ? ? ? jcenter()
? ? ? ? maven { url "https://jitpack.io" }
? ? }
}
app build.gradle?中

/*強大的圖表繪制工具 */ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0-alpha'

最簡單的代碼
<RelativeLayout
? ? xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? android:orientation="vertical">

? ? <com.github.mikephil.charting.charts.LineChart
? ? ? ? android:id="@+id/lineChart"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="300dp"
? ? ? ? android:layout_centerInParent="true"/>
</RelativeLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
? ? super.onCreate(savedInstanceState);
? ? setContentView(R.layout.activity_main);
? ? LineChart mLineChart = (LineChart) findViewById(R.id.lineChart);
? ? //顯示邊界
? ? mLineChart.setDrawBorders(true);
? ? //設置數據
? ? List<Entry> entries = new ArrayList<>();
? ? for (int i = 0; i < 10; i++) {
? ? ? ? entries.add(new Entry(i, (float) (Math.random()) * 80));
? ? }
? ? //一個LineDataSet就是一條線
? ? LineDataSet lineDataSet = new LineDataSet(entries, "溫度");
? ? LineData data = new LineData(lineDataSet);
? ? mLineChart.setData(data);
}
效果圖:


一.XAxis(X軸)
1.得到X軸:
XAxis xAxis = mLineChart.getXAxis();
2.設置X軸的位置(默認在上方):
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//值:BOTTOM,BOTH_SIDED,BOTTOM_INSIDE,TOP,TOP_INSIDE
3.設置X軸坐標之間的最小間隔(因為此圖有縮放功能,X軸,Y軸可設置可縮放)
xAxis.setGranularity(1f);
對比圖:左圖X軸在圖縮放時值的間隔會按比例改變,而右圖進行設置后,最小間隔始終為1

4.設置X軸的刻度數量
xAxis.setLabelCount(12, true);
第二個參數表示是否平均分配 如果為true則按比例分為12個點、如果為false則適配X刻度的值來分配點,可能沒有12個點。
對比圖:左圖的參數為true,右圖的參數為false

5.設置X軸的值(最小值、最大值、然后會根據設置的刻度數量自動分配刻度顯示)
xAxis.setAxisMinimum(0f);
xAxis.setAxisMaximum(20f);
前面是的X軸是根據(X,Y)的值默認顯示的X軸,現在才是真正的設置規定的值
效果圖:

6.設置X軸值為字符串(如上右圖)
xAxis.setValueFormatter(new IAxisValueFormatter() {
? ? @Override
? ? public String getFormattedValue(float value, AxisBase axis) {
? ? ? ? return mList.get((int) value); //mList為存有月份的集合
? ? }
});
想要顯示完整的12個月份,要與(x,y)坐標對應數量 10 改成 12
for (int i = 0; i < 12; i++) {
? ? entries.add(new Entry(i, (float) (Math.random()) * 80));
}
還有設置線條顏色、字體顏色、等等,可查看詳細的文檔。
7.取消曲線顯示的值為整數
與設置自定義X軸類似,設置曲線顯示值為整數,可在設置曲線LineDataSet?時,修改值的類型
lineDataSet.setValueFormatter(new IValueFormatter() {
? ? @Override
? ? public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
? ? ? ? int IValue = (int) value;
? ? ? ? return String.valueOf(IValue);
? ? }
});
二.YAxis(Y軸)
如上面的圖所示,Y軸總會高出X軸一點,并沒有從0點開始,因此需要對Y軸進行設置
Y軸和X軸類似
1.得到Y軸
YAxis leftYAxis = mLineChart.getAxisLeft();
YAxis rightYAxis = mLineChart.getAxisRight();
2.設置從Y軸值
leftYAxis.setAxisMinimum(0f);
leftYAxis.setAxisMaximum(100f);

rightYAxis.setAxisMinimum(0f);
rightYAxis.setAxisMaximum(100f);
以及
leftYAxis.setValueFormatter(new IAxisValueFormatter() {
? ? @Override
? ? public String getFormattedValue(float value, AxisBase axis) {
? ? ? ? return (int) value + "%";
? ? }
});
效果圖:

3.設置Y軸是否顯示(效果如上右圖)
rightYAxis.setEnabled(false); //右側Y軸不顯示
4.X軸和Y軸類似,都具有相同的屬性方法
rightYAxis.setGranularity(1f);
rightYAxis.setLabelCount(11,false);
rightYAxis.setTextColor(Color.BLUE); //文字顏色
rightYAxis.setGridColor(Color.RED); //網格線顏色
rightYAxis.setAxisLineColor(Color.GREEN); //Y軸顏色

5.限制線LimitLine(如上右圖)
LimitLine limitLine = new LimitLine(95,"高限制性"); //得到限制線
limitLine.setLineWidth(4f); //寬度
limitLine.setTextSize(10f);
limitLine.setTextColor(Color.RED); ?//顏色
limitLine.setLineColor(Color.BLUE);
rightYAxis.addLimitLine(limitLine); //Y軸添加限制線
三.Legend(圖例:即上圖所示的曲線圖下面的 溫度)
1.得到Lengend
Legend legend = mLineChart.getLegend();
2.設置Lengend位置
legend.setTextColor(Color.CYAN); //設置Legend 文本顏色
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);

3.設置標簽是否換行(當多條標簽時 需要換行顯示、如上右圖)
true:可換行。false:不換行
legend.setWordWrapEnabled(true);
4.隱藏Lengend
legend.setEnabled(false);
如下圖所示
四.Description(描述)
1.隱藏描述
Description description = new Description();
description.setEnabled(false);
mLineChart.setDescription(description);
2.設置描述內容
Description description = new Description();
description.setText("X軸描述");
description.setTextColor(Color.RED);
mLineChart.setDescription(description);

五.MarkerView
MarkerView可自定義,用于點擊圖標值時顯示想要的內容 效果如上右圖
1.自定義MarkerView
public class MyMarkerView extends MarkerView {

? ? private TextView tvContent;
? ? private DecimalFormat format = new DecimalFormat("##0");

? ? public MyMarkerView(Context context) {
? ? ? ? super(context, R.layout.layout_markerview);
? ? ? ? tvContent = (TextView) findViewById(R.id.tvContent);
? ? }

? ? @Override
? ? public void refreshContent(Entry e, Highlight highlight) {
? ? ? ? tvContent.setText(format.format(e.getY()));
? ? ? ? super.refreshContent(e, highlight);
? ? }

? ? @Override
? ? public MPPointF getOffset() {
? ? ? ? return new MPPointF(-(getWidth() / 2), -getHeight() - 10);
? ? }
}
2.設置顯示MarkerView
MyMarkerView mv = new MyMarkerView(this);
mLineChart.setMarkerView(mv);
折線圖的線條設置
//一個LineDataSet就是一條線
LineDataSet lineDataSet = new LineDataSet(entries, "溫度");
//設置曲線值的圓點是實心還是空心
lineDataSet.setDrawCircleHole(false);
//設置顯示值的字體大小
lineDataSet.setValueTextSize(9f);
//線模式為圓滑曲線(默認折線)
lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);

?

此外,整理一下常用的方法:

整理了一下 圖表中常用的一些方法

動畫:
所有的圖表類型都支持下面三種動畫,分別是x方向,y方向,xy方向。
?animateX(int durationMillis): x軸方向
?animateY(int durationMillis): y軸方向

?animateXY(int xDuration, int yDuration): xy軸方向

XY軸的繪制
setEnabled(boolean enabled):設置軸是否被繪制。默認繪制,false不會被繪制。
setDrawLabels(boolean enabled):設置為true打開繪制軸的標簽。
setDrawAxisLine(boolean enabled): 設置為true,繪制軸線
setDrawGridLines(boolean enabled): 設置為true繪制網格線。

定義軸線樣式
setTextColor(int color): 設置軸標簽文本顏色。
setTextSize(float size):設置軸標簽的字體大小。
setTypeface(Typeface tf):設置軸標簽的自定義Typeface(Typeface.createFromAsset(getAssets(), "字體文件名");)
setGridColor(int color): 設置網格線顏色。
setGridLineWidth(float width):設置網格線寬度。
setAxisLineColor(int color):設置此軸的坐標軸的顏色。
setAxisLineWidth(float width): 設置此軸的坐標軸的寬度。
setVisibleXRangeMaximum(float maxXRange):設置x軸最多顯示數據條數,(要在設置數據源后調用,否則是無效的)
enableGridDashedLine(float lineLength, float spaceLength, float phase): 顯示網格線虛線模式,"lineLength"控制短線條的長度,"spaceLength"控制兩段線之間的間隔長度,"phase"控制開始的點。

圖表交互設置
setTouchEnabled(boolean enabled): 允許你打開或者關閉與圖表的所有觸摸交互的情況。設置是否可以觸摸,如為false,則不能拖動,縮放等
setDragEnabled(boolean enabled): 打開或關閉對圖表的拖動。
setScaleEnabled(boolean enabled):打開或關閉對圖表所有軸的的縮放。
setScaleXEnabled(boolean enabled): 打開或關閉x軸的縮放
setScaleYEnabled(boolean enabled): 打開或關閉y軸的縮放。
setPinchZoom(boolean enabled): 如果設置為true,擠壓縮放被打開。如果設置為false,x和y軸可以被單獨擠壓縮放。
setHighlightEnabled(boolean enabled): 如果設置為true,在圖表中選中觸屏高亮。
setHighlightPerDragEnabled(boolean enabled): 設置為true時允許高亮顯示拖動結束的對象在縮放到最下時。默認:true
setHighlightIndicatorEnabled(boolean enabled): 如果設置為true, 指標線(或桿)將展示被選擇的線的繪制的值。
自定義軸線的值
setAdjustXLabels(boolean enabled):如果被設置為true,x軸條目將依賴于它自己在進行縮放的時候。如果設置為false,x軸條目將總是保持相同。
setAvoidFirstLastClipping(boolean enabled):如果設置為true,圖表將避免第一個和最后一個標簽條目被減掉在圖表或屏幕的邊緣。
setSpaceBetweenLabels(int characters): 設置x軸標簽之間的空間字符數,默認是4個。
setPosition(XAxisPosition pos):設置XAxis應該出現的位置。可以選擇TOP,BOTTOM,BOTH_SIDED,TOP_INSIDE或者BOTTOM_INSIDE。

setDescription(String desc): 設置表格的描述

? setDrawYValues(boolean enabled): 設置是否顯示y軸的值的數據
?setValuePaintColor(int color):設置表格中y軸的值的顏色,但是必須設置setDrawYValues(true)
? setValueTypeface(Typeface t):設置字體
? setValueFormatter(DecimalFormat format): 設置顯示的格式
? setPaint(Paint p, int which): 自定義筆刷
?public ChartData getDataCurrent():返回ChartData對象當前顯示的圖表。它包含了所有信息的顯示值最小和最大值等

setStartAtZero(boolean enabled):如果這個打開,軸線總是有最小值0,無論什么類型的圖表被展示。
setAxisMaxValue(float max):設置一個自定義的最大值為這條軸,如果設置了,這個值將不會依賴于提供的數據自動計算。
resetAxisMaxValue(): 調用這個將撤銷以前設置的最大值。這意味著,你將再次允許軸自動計算它的最大值。
setAxisMinValue(float min): 設置一個自定義的最小值。如果設置了,這個值將不會依賴于你提供的數據進行自動計算。
resetAxisMinValue():調用這個方法撤銷以前設置的最小值。這意味著,你將再次允許軸自動計算他的最小值。
setInverted(boolean enabled): 如果設置為true,這個軸將被反向,那意味著最高出的將到底部,最低部的到頂端。
setSpaceTop(float percent):設置在圖表上最高處的值相比軸上最高值的頂端空間(總軸范圍的百分比)
setSpaceBottom(float percent): 設置在圖表上最低處的值相比軸上最低處值的底部空間(總軸范圍的百分比)
setShowOnlyMinMax(boolean enabled): 如果打開了,這個軸將展示出它的最小值和最大值。這將忽略或者覆蓋定義過的label-count。
setPosition(YAxisLabelPosition pos):設置軸標簽應該被繪制的位置。INSIDE_CHART或者OUTSIDE_CHART中的一個。 自定義影響軸的數值范圍應該在圖表被設置數據之前應用。
?public float getYChartMin(): 返回當前最小值
?public float getYChartMax(): 返回當前最大值
?public float getAverage(): 返回所有值的平均值。
?public float getAverage(int type): 返回平均值
?public PointF getCenter(): 返回中間點
?public Paint getPaint(int which): 得到筆刷
?setDragScaleEnabled(boolean enabled): 設置是否可以拖拽,縮放
?setOnChartValueSelectedListener(OnChartValueSelectedListener l): 設置表格上的點,被點擊的時候,的回調函數
?public void highlightValues(Highlight[] highs): 設置高亮顯示
?saveToGallery(String title): 保存圖表到圖庫中
?saveToPath(String title, String pathOnSD): 保存.
?setScaleMinima(float x, float y): 設置最小的縮放
?centerViewPort(int xIndex, float val): 設置視口

?fitScreen(): 適應屏幕

?

?

總結

以上是生活随笔為你收集整理的Android中MPAndroidChart图表工具的常用方法(汇总)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。