MpaAndroidChart de gráfico de código abierto de la biblioteca de la biblioteca
Te presentaré una biblioteca de código abierto icono MpaAndroidChart. No solo puede dibujar varios gráficos estadísticos en dispositivos Android, sino que también arrastrar y acercar los gráficos, lo cual es muy flexible de usar. MpandroidChart también tiene tipos de gráficos comunes: gráficos de línea, gráficos circulares, gráficos de barras y gráficos de dispersión.
mpandroidChartLibrary.jar Dirección de descarga del paquete:
https://github.com/philjay/mpandroidchart/releases
Lo siguiente implementa principalmente el siguiente cuadro de pastel:
1. Descargue el último paquete mpandroidChartLibrary-2-0-8.JAR de la dirección anterior y cópielo en las libs del proyecto
2. Defina el archivo XML
3. El código lógico Java principal es el siguiente.
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; importar android.support.v7.app.actionBaractivity; importandroid.graphics.color; importandroid.os.bundle; importandroid.util.displaymetrics; La clase pública MainActivity extiende ActionBaractivity {privatePiechartmchart; @Override protegido 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.Setholecolorcransparent (true); Piechart.Setholeradius (60f); //Radiuspiechart.setTransparentCircleradius(64f); // círculo translúcido // piechart.setholeradius (0) // círculo sólido piechart.setDescription ("Test Pide Chart"); // mchart.setDrawyValues (verdadero); Piechart.setDrawCentertext (verdadero); // El texto se puede agregar en el medio de la tabla PIECHART. Piechart.SetrotationAngle (90); // ángulo de rotación inicial // dibuja el valor de descripción correspondiente en el corte // mchart.setDrawxValues (verdadero); // habilitar la rotación de la tabla por touch piechart.setrotationEnabled (verdadero); // se puede girar manualmente // Valores porcentuales de visualización piechart.setUsePercentValues (verdadero); // Mostrar porcentajes // mchart.setunit ("); // Mostrar porcentajes // mchart.setunit ("); // mchart.setDrawUnitsInchart (verdadero); // Agregar un oyente de selección // mchart.setonchartValuesElectedListener (esto); // mchart.setTouchEnabled (falso); // mchart.setOnanimationListener (esto); Piechart.setCentertext ("Ingresos trimestrales"); // texto en el medio del gráfico circular // establecer datos piChart.setData (Piedata); // deshacer todos los aspectos más destacados // piechart.highlightvalues (nulo); // piechart.invalidate (); Leyenda mlegend = piechart.getlegend (); // Establecer el gráfico de escala mlegend.setPosition (legendposition.right_of_chart); // Mostrar en el extremo derecho // mlegend.setform (legendform.line); // Establecer la forma del gráfico de escala, el valor predeterminado es cuadrado mlegend.setxentryspace (7f); mlegend.setyEntryspace (5f); Piechart.Animatexy (1000, 1000); // establecer la animación // mchart.spin (2000, 0, 360); } / ** * * @param cuenta dividida en varias partes * @param rango * / privatePiedAtageTpiedata (int count, float range) {ArrayList <String> xvalues = new ArrayList <String> (); // xvals se usa para representar el contenido en cada pastel para (inti = 0; i <count; i ++) {xvalues.add ("trimestral" + (i + 1)); // La pantalla en el PIE es trimestral1, trimestral2, trimestral3, trimestralmente4} ArrayList <Entry> yvalues = new ArrayList <Nning> (); // yvals se usa para representar los datos reales que encapsulan cada bloque de pastel // datos del gráfico circular/** * Divide un gráfico circular en cuatro partes, y la relación numérica de las cuatro partes es 14: 14: 34: 38 * Por lo que el porcentaje representado por 14 es 14% */float trimestral1 = 14; flotante trimestralmente2 = 14; flotante trimestralmente3 = 34; flotante trimestralmente4 = 38; yvalues.add (nueva entrada (trimestralmente1, 0)); yvalues.add (nueva entrada (trimestral2, 1)); yvalues.add (nueva entrada (trimestral3, 2)); yvalues.add (nueva entrada (trimestral4, 3)); // La recolección del eje Y-PiedataSetPiedataSet = new PiedataSet (Yvalues, "Trimestralmente Ingresos 2014"/*Show en la tabla de escala*/); PiedataSet.SetsLicespace (0f); // Establezca la distancia entre gráficos circulares ArrayList <integer> Colors = new ArrayList <Integer> (); // colores de gráfico de pastel.add (color.rgb (205, 205, 205)); colores.add (color.rgb (114, 188, 223)); colores.add (color.rgb (255, 123, 124)); Colors.add (color.rgb (57, 135, 200)); Piedataset.setColors (colores); DisplayMetrics Metrics = GetResources (). GetDisplayMetrics (); floatpx = 5 * (Metrics.densityDPI / 160f); PiedataSet.SetSelectionShift (PX); // La longitud del estado seleccionado Piedatapiedata = nueva Piedata (xvalues, Piedataset); returnpiedata; }} Las representaciones son las siguientes:
MPAANDROIDCHART Gráfico de la biblioteca de gráfico de código abierto
1. Copie el paquete MandroidChartLibrary-2-0-8.JAR en las libs del proyecto
2. Defina el archivo XML
3. El código lógico Java principal es el siguiente.
PackageCom.example.mpandroidlineChart; 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; importar android.support.v7.app.actionBaractivity; importandroid.graphics.color; importandroid.os.bundle; La clase pública MainActivity extiende ActionBarActivity {privateLInechartMlinechart; // tipo de letra privada mtf; @Override protegido void onCreate (Bundle SaveDInStancestate) {super.oncreate (saveDInStancestate); setContentView (r.layout.activity_main); mlinechart = (linechart) findViewByid (r.id.spread_line_chart); // mtf = typeface.createFromAsset (getAssets (), "opensans-bold.ttf"); Lineatamlinedata = getLinedata (36, 100); ShowChart (Mlinechart, Mlinedata, Color.rgb (114, 188, 223)); } // Establezca el estilo de exhibición Void privado showchart (Linechartlinechart, Linedataledata, int color) {linechart.setDrawBorders (falso); // dónde agregar bordes al gráfico de línea // sin descripción Text Linechart.SetDescription (""); // Descripción de datos // Si no hay datos, esto se mostrará, similar a ListView emtpyviewLinechart.setNodateTextDescription ("necesita proporcionar datos para el cuadro"); // Entender / deshabilitar el fondo de la cuadrícula linechart.setDrawGridBackground (falso); // Si debe mostrar el color de la tabla linechart.setGridBackgroundColor (color.white & 0x70fffff); // El color de la tabla, aquí es establecer una transparencia para el color // habilitar los engranajes táctiles linechart.setTouchEnabled (verdadero); // Establezca si se puede tocar // habilitar escalar y arrastrar linechart.setDragenable (true); // ¿Puede arrastrar y soltar linechart.setscaleenEnted (verdadero); // ¿Puede escalar // si está deshabilitado, la escala se puede hacer en el eje x e y por separado linechart.setpinchzoom (falso); // linechart.setbackgroundcolor (color); // establecer fondo // Agregar datos linechart.setData (lineData); // Establecer datos // Obtenga la leyenda (solo posible después de configurar datos) Legend mlegend = linechart.getLegend (); // Establecer el icono de escala, que es el valor del grupo de y // modificar la leyenda ... // 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); // Ejecución inmediata de animación, x-eje}/ *** Generar un recuento de datos* @param indica cuántos puntos coordinados hay en el rango de gráfico* @param utilizado para generar números aleatorios dentro del rango* @return*/ privateLineateTlinedata (int count, float range) {arrayList <String> xvalues = new arrayList <Stray> (); for (inti = 0; i <count; i ++) {// datos que se muestran en el eje x, por defecto, el subíndice numérico se usa para mostrar xValues.add (""+i); } // y-eje data arrayList <Entring> yvalues = new ArrayList <Nning> (); for (inti = 0; i <count; i ++) {float value = (float) (Math.random () * rango)+3; yvalues.add (nueva entrada (valor, i)); } // Crea un conjunto de datos y dale un tipo // conjunto de datos del eje y LinedataSetLinedataSet = new LinedataSet (YValues, "Test Line Chart" /*que se muestra en el gráfico de escala* /); // mlinedataset.setFillalpha (110); // mlinedataset.setFillColor (color.red); // Use el conjunto de eje Y para establecer el parámetro LinedataSet.SetLineWidth (1.75f); // LineWidth LinedataSet.SetCirclesize (3f); // Muestra el tamaño de círculo LinedataSet.setColor (color.white); // Muestra el color LinedataSet.setCirClecolor (color.white); // El color del círculo forrado. // El color de la línea de línea resaltada <linedataSet> LinedataSets = new ArrayList <LinedataSet> (); LinedataSets.add (LinedataSet); // Agregue los conjuntos de datos // Cree un objeto de datos con los conjuntos de datos LinedatalineATA = new Linedata (xValues, LinedataSets); returnlinedata; }} Las representaciones son las siguientes:
MpaAndroidChart Gráfico de la biblioteca de gráfico de código abierto
1. Copie el paquete MandroidChartLibrary-2-0-8.JAR en las libs del proyecto
2. Defina el archivo XML
3. El código lógico Java principal es el siguiente.
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 Formal; 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; importar; importación android.support.v7.app.actionbaractivity; importandroid.graphics.color; importandroid.os.bundle; clase pública MainActivity extiende ActionBarActivity {privateBarchartMbarchart; privateBardatambardata; @Overrideprotected Void Increate (Bundle Savedinstancestate) {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 (falso); /// dónde agregar bordes en línea gráfico barchart.setDescription (""); // Descripción de datos // Si no hay datos, esto se mostrará, similar al vacío de ListView, ViewBarchart.SetNodateTextDescription ("necesita proporcionar datos para el gráfico"); barchart.setDrawGridBackground (falso); // si debe mostrar la tabla color barchart.setGridBackgroundColor (color.white & 0x70fffff); // El color de la tabla, aquí es establecer una transparencia para el color Barchart.setTouchEnabled (verdadero); // establecer si Barchart.SetDragenable (verdadero); // si Barchart.SetScaleenAbled (verdadero); // si barchart.setPinchzoom (falso); // // barchart.setBackgroundColor (); // establecer fondo barchart.setDrawBarShadow (true); barchart.setData (bardata); // establecer la leyenda de datos mlegend = barChart.getLegend (); // establecer icono de escala mlegend.setform (legendform.circle); // style mlegend.setformsize (6f); // font mlegend.settextcolor (color.black); // Color // configuración del eje x // xaxisxaxis = barchart.getxaxis (); // xaxis.setPosition (xaxisposition.bottom); barchart.animatex (2500); // Ejecución inmediata de animación, x-eje} privateBardatAgetBardata (int count, float range) {ArrayList <String> xValues = new ArrayList <String> (); for (inti = 0; i <count; i ++) {xvalues.add ("th" + (i + 1) + "barrio");} arraylist <barentry> yval ArrayList <Barentry> (); for (inti = 0; i <count; i ++) {float value = (float) (math.random ()*número aleatorio dentro del rango/*100*/)+3; yvalues.add (new Barentry (valor, i)); } // conjunto de datos del eje y bardatasetbardataSet = new Bardataset (YValues, "Test Pide Chart"); Bardataset.setColor (color.rgb (114, 188, 223)); ArrayList <Bardataset> Bardatasets = new ArrayList <BardataSet> (); Bardatasets.add (Bardataset); // Agregar los conjuntos de datos 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.compons. .Legend.legendform; importcom.github.mikephil.charting.components.xaxis; importcom.github.mikephil.charting.components.xaxis.xaxisposition; importo m.github.mikephil.charting.data.bardata; importcom.github.mikephil.charting.data.bardataset; importcom.github.mikephil.charting.data.barEntry; importar; android.support.v7.app.actionbaractivity; importandroid.graphics.color; importandroid.os.bundle; clase pública MainActivity extiende ActionBarActivity {privateBarchartMbarchart; privateBardatambardata; @Overrideprotected Void Increate (Bundle Savedinstancestate) {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 (falso); /// dónde agregar bordes en línea gráfico barchart.setDescription (""); // Descripción de datos // Si no hay datos, esto se mostrará, similar al vacío de ListView, ViewBarchart.SetNodateTextDescription ("necesita proporcionar datos para el gráfico"); barchart.setDrawGridBackground (falso); // si debe mostrar la tabla color barchart.setGridBackgroundColor (color.white & 0x70fffff); // El color de la tabla, aquí es establecer una transparencia para el color Barchart.setTouchEnabled (verdadero); // establecer si Barchart.SetDragenable (verdadero); // si Barchart.SetScaleenAbled (verdadero); // si barchart.setPinchzoom (falso); // // barchart.setBackgroundColor (); // establecer fondo barchart.setDrawBarShadow (true); barchart.setData (bardata); // establecer la leyenda de datos mlegend = barChart.getLegend (); // establecer icono de escala mlegend.setform (legendform.circle); // style mlegend.setformsize (6f); // font mlegend.settextcolor (color.black); // Color // configuración del eje x // xaxisxaxis = barchart.getxaxis (); // xaxis.setPosition (xaxisposition.bottom); barchart.animatex (2500); // Ejecución inmediata de animación, x-eje} privateBardatAgetBardata (int count, float range) {ArrayList <String> xValues = new ArrayList <String> (); for (inti = 0; i <count; i ++) {xvalues.add ("th" + (i + 1) + "barrio");} arraylist <barentry> yval ArrayList <Barentry> (); for (inti = 0; i <count; i ++) {float value = (float) (math.random ()*número aleatorio dentro del rango/*100*/)+3; yvalues.add (new Barentry (valor, i)); } // conjunto de datos del eje y bardatasetbardataSet = new Bardataset (YValues, "Test Pide Chart"); Bardataset.setColor (color.rgb (114, 188, 223)); ArrayList <Bardataset> Bardatasets = new ArrayList <BardataSet> (); Bardatasets.add (Bardataset); // Agregue los conjuntos de datos bardatabardata = new Bardata (xvalues, Bardatasets); returnBardata;}} Las representaciones son las siguientes:
Lo anterior es la introducción al uso de la biblioteca de gráficos de código abierto MPAANDROIDCHART, que está relacionada con el gráfico circular, el gráfico de línea y el gráfico de barras. Espero que sea útil para todos.