MpaAndroidChart с открытым исходным кодом
Я познакомлю вас с библиотекой с открытым исходным кодом MpaandroidChart. Он может не только нарисовать различные статистические диаграммы на устройствах Android, но также перетаскивать и увеличивать диаграммы, которые очень гибко в использовании. MpandroidChart также имеет общие типы диаграмм: линейные диаграммы, круговые диаграммы, барные диаграммы и диаграммы рассеяния.
MpandroidChartLibrary.jar пакета Адрес:
https://github.com/philjay/mpandroidchart/releases
Следующее в основном реализует следующую круговую диаграмму:
1. Загрузите последний пакет MpandroidChartlibrary-2-0-8.jar с указанного выше адреса и скопируйте его в либерации проекта
2. Определите файл XML
3. Основной код логики Java заключается в следующем.
importjava.util.arraylist; importcom.github.mikephil.charting.charts.piechart; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.data.entry; importcom.github.mikephil.charting.data.piedataset; Import Android.support.v7.app.actionbaractivity; AmpormAndroid.graphics.color; AmpormAndroid.os.bundle; ampormandroid.util.displaymetrics; открытый класс MainActivity расширяет ActionBaractivity {privatePieChartMchart; @Override Protected void Oncreate (Bundle SavedInstanceState) {super.oncreate (savedInstanceState); setContentView (r.layout.activity_main); mChart = (pieChart) findViewByid (r.id.spread_pie_chart); Piedatampiedata = getpiedata (4, 100); ShowChart (MCHART, MPIEDATA); } private void showChart (pieChartpieChart, piedatapiedata) {piechart.setholecolortransparent (true); PieChart.setholeradius (60f); //Radiuspiechart.settransparentcircleradius(64f); // полупрозрачный круг // pieChart.setholeradius (0) // Solid Circle PieChart.SetDescription ("Тестовая диаграмма"); // mchart.setdrawyvalues (true); PieChart.setDrawCenterText (TRUE); // текст может быть добавлен в середине круговой диаграммы PieChart.SetDrawHoleenabled (TRUE); PieChart.SetroTationAngle (90); // Начальный угол поворота // рисует соответствующее значение описания в Slice // MCHART.SetDrawXValues (true); // включить вращение диаграммы с помощью Touch PieChart.SetRotationEnabled (true); // можно вращать вручную // Отображение процентных значений pieChart.setUsePercentValues (true); // Проценты отображения // mChart.SetUnit ("); // Процент отображения // mChart.setUnit ("); // mchart.setdrawunitsinchart (true); // Добавить выборочный слушатель // mChart.setOnChartValueueElectedListener (this); // mChart.SetTouchenabled (false); // mchart.setonanimationListener (это); pieChart.setCenterText («Ежеквартальный доход»); // текст в середине круговой диаграммы // Установить данные pieChart.setData (piedata); // отменять все основные моменты // piechart.highlightvalues (null); // pieChart.invalidate (); Легенда mlegend = pieChart.getLegend (); // Установить масштабную график mlegend.setPosition (LegendPosition.right_of_chart); // показать в дальнем правом // mlegend.setform (LegendForm.line); // Установить форму масштабного графика, по умолчанию есть квадратный mlegend.setxentryspace (7f); mlegend.setyEntryspace (5f); PieChart.AnimateXy (1000, 1000); // Установить анимацию // mChart.spin (2000, 0, 360); } / ** * * * @param count, разделенное на несколько частей * @param range * / privatepiedatagetpiedata (int count, range range) {arraylist <string> xvalues = new ArrayList <string> (); // xvals используется для представления содержимого на каждом пироге для (inti = 0; i <count; i ++) {xvalues.add ("Quarterly" + (i + 1)); // дисплей на пироге Quarterly1, Quarterly2, Quarterly3, Quarterly4} ArrayList <intry> yvalues = new ArrayList <intry> (); // yvals используется для представления фактических данных, инкапсулирующих каждый блок пирога // DI -диаграммы/** * Разделите круговую диаграмму на четыре части, а числовое соотношение четырех частей составляет 14: 14: 34: 38 *, поэтому процент, представленное 14% */float Quarterly1 = 14; float Quarterly2 = 14; float Quarterly3 = 34; float Quarterly4 = 38; yvalues.add (новая запись (Quarterly1, 0)); yvalues.add (новая запись (Quarterly2, 1)); yvalues.add (новая запись (Quarterly3, 2)); yvalues.add (новая запись (Quarterly4, 3)); // Сборки оси y Piedatasetpiedataset = new Piedataset (yvalues, «Ежеквартальный доход 2014»/*Показать на диаграмме масштаба*/); piedataset.setslicespace (0f); // Установить расстояние между круговыми диаграммами ArrayList <Integer> colors = new ArrayList <Integer> (); // Cie -диаграмма Colors.Add (Color.rgb (205, 205, 205)); colors.add (color.rgb (114, 188, 223)); colors.add (color.rgb (255, 123, 124)); colors.add (color.rgb (57, 135, 200)); piedataset.setcolors (цвета); DisplayMetrics metrics = getResources (). GetDisplayMetrics (); floatpx = 5 * (metrics.densitydpi / 160f); piedataset.setselectionshift (px); // длина выбранного состояния piedatapiedata = new Piedata (xvalues, piedataset); returnpiedata; }} Рендеринги следующие:
Диаграмма библиотеки с открытым исходным кодом MpaandroidChart
1. Скопируйте пакет MandroidChartLibrary-2-0-8.jar в либерации проекта
2. Определите файл XML
3. Основной код логики Java заключается в следующем.
packagecom.example.mpandroidlinlinechart; importjava.util.arraylist; importcom.github.mikephil.charting.charts.linechart; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.components.legendform; importcom.github.mikephil.charting.data.entry; importcom.github.mikephil.charting.data.linedataset; importcom.github.mikephil.charting.data.linedataset; Import Android.support.v7.app.actionbaractivity; AmpormAndroid.graphics.color; AmpormAndroid.os.bundle; открытый класс MainActivity расширяет ActionBaractivity {PrivateLineChartMlineChart; // частное шрифт MTF; @Override Protected void Oncreate (Bundle SavedInstanceState) {super.oncreate (savedInstanceState); setContentView (r.layout.activity_main); mlineChart = (lineChart) findViewByid (r.id.spread_line_chart); // mtf = typerface.createFromasset (getAssets (), "opensans-bold.ttf"); Linedatamlinedata = getLinedata (36, 100); ShowChart (MlineChart, Mlinedata, Color.rgb (114, 188, 223)); } // Установить стиль дисплея Private void ShowChart (LineChartLineChart, LinedatalInedata, int color) {lineChart.setDrawborders (false); // Где добавить границы в диаграмму строки // Нет описания Text LineChart.setDescription (""); // Описание данных // Если нет данных, это будет отображаться, аналогично ListView emtpyviewlineChart.setNoDatatextDescription («вам необходимо предоставить данные для диаграммы.»); // включить / отключить фон сетки linechart.setdrawgridbackground (false); // Стоит ли отображать цвет таблицы LineChart.SetGridbackgroundColor (color.white & 0x70fffff); // Цвет таблицы, здесь должен установить прозрачность для цвета // включить сенсорные передачи linechart.settouchenabled (true); // Установить, можно ли это коснуться // Включить масштабирование и перетаскивание linechart.setdragenabled (true); // Можете ли вы перетаскивать linechart.setscaleenabled (true); // Можете ли вы масштабировать // Если отключить, масштабирование может быть сделано на x- и y-оси отдельно LineChart.SetPinchzoom (false); // linechart.setbackgroundcolor (цвет); // Установить фон // Добавить данные lineChart.setData (linedata); // Установить данные // Получить легенду (возможна только после настройки данных) Legend Mlegend = lineChart.getLegend (); // Установить значок шкалы, который является значением группы y // модифицировать легенду ... // mlegend.setPosition (LegendPosition.left_of_Chart); mlegend.setform (legendform.circle); // style mlegend.setformsize (6f); // font mlegend.settextcolor (color.white); // color // mlegend.settypeface (mtf); // font linechart.animatex (2500); // Непосредственное выполнение анимации, оси x}/ *** Создание данных* @param Указывает, сколько точек координат в диаграмме* @param используется для генерации случайных чисел в диапазоне* @return*/ privateLinedatagetLedInedata (int count, range range) {arraylist <string> xvalues = new ArrayListAta (int float lange) {arraylist <string> xvalues = rastlired <string>;); Для (inti = 0; i <count; i ++) {// данные, отображаемые на оси x, по умолчанию, числовой подписчик используется для отображения xvalues.add (""+i); } // y-оси ArrayList <intpirt> yvalues = new ArrayList <intry> (); for (inti = 0; i <count; i ++) {float value = (float) (math.random () * range)+3; yvalues.add (новая запись (значение, i)); } // Создать набор данных и придать ему набор данных типа // y linedatasetlinedataset = new LinedataSet (yvalues, "Test Line Line" /*отображается на диаграмме масштаба* /); // mlinedataset.setfillalpha (110); // mlinedataset.setfillcolor (color.red); // Использование набора оси Y, чтобы установить параметр linedataset.setlinewidth (1,75F); // linewidth linedataset.setCirclesize (3F); // отображать размер круга linedataset.setcolor (color.white); // отображать цвет linedataset.setcirclecolor (color.white); // цвет круга linedataset.sethighlightcolor (color.white); // Цвет выделенного линии ArrayList <Linedataset> linedataSets = new ArrayList <linedataset> (); LinedataSets.Add (LinedAtaset); // Добавить наборы данных // Создать объект данных с помощью наборов данных linedatalInedata = new Linedata (xvalues, linedataSets); returnlinedata; }} Рендеринги следующие:
MpaAndroidChart с открытым исходным кодом
1. Скопируйте пакет MandroidChartLibrary-2-0-8.jar в либерации проекта
2. Определите файл XML
3. Основной код логики Java заключается в следующем.
packagecom.jackie.mpandoidbarchart; importjava.util.arraylist; importcom.github.mikephil.charting.charts.barchart; importcom.github.mikep hil.charting.charts.linechart; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.components.legend Form; importcom.github.mikephil.charting.components.xaxis; importcom.github.mikephil.charting.components.xaxis.xaxisposition; importcom.githu b.mikephil.charting.data.bardata; importcom.github.mikephil.charting.data.bardataset; importcom.github.mikephil.charting.data.barentry; Import Android.support.v7.app.ActionBarActivity; ampormAndroid.graphics.color; immormandroid.os.bundle; открытый класс MainActivity расширяет ActionBaractivity {privateBarchartmbarchart; PrivateBardatambardata; @OverrideProtected void oncreate (Bundle savedincestate) {super.oncreate (savedInStanceState); setContentView (r.layout.activity_main); mbarchart = (barchart) findviewbyid (r.id.spread_bar_chart); mbardata = getbardata (4, 100); Showbarchart (Mbarchart, Mbardata);} private void showbarchart (barchartbarchart, bardatabardata) {barchart.setdrawborders (false); /// Где добавить границы на линейной диаграмме barchart.setDescription (""); // Описание данных // Если нет данных, это будет отображаться, аналогично ListView yeamhViewbarchart.SetNoDatatextDescription («Вам нужно предоставить данные для диаграммы»); barchart.setdrawgridbackground (false); // Стоит ли отображать цвет таблицы Barchart.setGridbackgroundcolor (color.white & 0x70fffff); // Цвет таблицы, здесь должен установить прозрачность для цвета Barchart.SetTouchenabled (true); // установить, будь то Barchart.setDragenabled (true); // будь то barchart.setscaleenabled (true); // будь то barchart.setpinchzoom (false); // // barchart.setbackgroundcolor (); // Установить фоновый Barchart.setDrawbarshadow (true); barchart.setData (bardata); // Установить Legend Data Mlegend = barchart.getLegend (); // установить значок шкалы mlegend.setform (LegendForm.circle); // style mlegend.setformsize (6f); // font mlegend.settextcolor (color.black); // color // x-ось настройка // xaxisxaxis = barchart.getxaxis (); // xaxis.setPosition (xaxisposition.bottom); Barchart.animatex (2500); // Непосредственное выполнение анимации, оси x} privatebardatagetbardata (int count, range range) {arraylist <string> xvalues = new ArrayList <string> (); для (inti = 0; i <count; i ++) {xvalues.add ("th" + (i + 1) + "Quarter"); ArrayList <Barentry> (); for (inti = 0; i <count; i ++) {float value = (float) (math.random ()*случайное число в диапазоне/*100*/)+3; yvalues.add (new Barentry (значение, i)); } // Набор данных оси Y Bardatasetbardataset = new Bardataset (yvalues, «Тестовая круговая диаграмма»); bardataset.setcolor (color.rgb (114, 188, 223)); Arraylist <bardataset> bardatasets = new Arraylist <bardataset> (); bardatasets.add (bardataset); // Добавить наборы данных bardatabardata = new Bardata (xvalues, bardatasets); returnbardata;}} packagecom.jackie.mpandoidbarchart; importjava.util.arraylist; importcom.github.mikephil.charting.charts.barchart; importcom.github.mikephil.chart ing.charts.linechart; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.components.legend; importcom.github.mikephil.charting.components. .Legend.legendform; importcom.github.mikephil.charting.components.xaxis; importcom.github.mikephil.charting.components.xaxis.xaxisposition; importco m.github.mikephil.charting.data.bardata; importcom.github.mikephil.charting.data.bardataset; importcom.github.mikephil.charting.data.barentry; import Android.support.v7.app.ActionBarActivity; ampormAndroid.graphics.color; immormandroid.os.bundle; открытый класс MainActivity расширяет ActionBaractivity {privateBarchartmbarchart; PrivateBardatambardata; @OverrideProtected void oncreate (Bundle savedincestate) {super.oncreate (savedInStanceState); setContentView (r.layout.activity_main); mbarchart = (barchart) findviewbyid (r.id.spread_bar_chart); mbardata = getbardata (4, 100); Showbarchart (Mbarchart, Mbardata);} private void showbarchart (barchartbarchart, bardatabardata) {barchart.setdrawborders (false); /// Где добавить границы на линейной диаграмме barchart.setDescription (""); // Описание данных // Если нет данных, это будет отображаться, аналогично ListView yeamhViewbarchart.SetNoDatatextDescription («Вам нужно предоставить данные для диаграммы»); barchart.setdrawgridbackground (false); // Стоит ли отображать цвет таблицы Barchart.setGridbackgroundcolor (color.white & 0x70fffff); // Цвет таблицы, здесь должен установить прозрачность для цвета Barchart.SetTouchenabled (true); // установить, будь то Barchart.setDragenabled (true); // будь то barchart.setscaleenabled (true); // будь то barchart.setpinchzoom (false); // // barchart.setbackgroundcolor (); // Установить фоновый Barchart.setDrawbarshadow (true); barchart.setData (bardata); // Установить Legend Data Mlegend = barchart.getLegend (); // установить значок шкалы mlegend.setform (LegendForm.circle); // style mlegend.setformsize (6f); // font mlegend.settextcolor (color.black); // color // x-ось настройка // xaxisxaxis = barchart.getxaxis (); // xaxis.setPosition (xaxisposition.bottom); Barchart.animatex (2500); // Непосредственное выполнение анимации, оси x} privatebardatagetbardata (int count, range range) {arraylist <string> xvalues = new ArrayList <string> (); для (inti = 0; i <count; i ++) {xvalues.add ("th" + (i + 1) + "Quarter"); ArrayList <Barentry> (); for (inti = 0; i <count; i ++) {float value = (float) (math.random ()*случайное число в диапазоне/*100*/)+3; yvalues.add (new Barentry (значение, i)); } // Набор данных оси Y Bardatasetbardataset = new Bardataset (yvalues, «Тестовая круговая диаграмма»); bardataset.setcolor (color.rgb (114, 188, 223)); Arraylist <bardataset> bardatasets = new Arraylist <bardataset> (); bardatasets.add (bardataset); // Добавить наборы данных bardatabardata = new Bardata (xvalues, bardatasets); returnbardata;}} Рендеринги следующие:
Выше приведено введение в использование библиотеки диаграмм с открытым исходным кодом MpaandroidCart, которая связана с круговой диаграммой, линейной диаграммой и барной диаграммой. Я надеюсь, что это будет полезно для всех.