1. 程式人生 > >Android柱狀圖、餅狀圖、折線圖

Android柱狀圖、餅狀圖、折線圖

1、效果圖

這裡寫圖片描述

2、程式碼

1)compile ‘com.github.PhilJay:MPAndroidChart:v3.0.1’
2)柱狀圖

 <com.github.mikephil.charting.charts.BarChart
        android:id="@+id/chart1"
        android:layout_width="300dp"
        android:layout_height="320dp" />
                String[] mDatas = new String[] {"未籤離", "已籤離"
}; PieChart mPChart = (PieChart) findViewById(R.id.piechart1); private void initData1() { mChart.setDrawBarShadow(false);//繪製當前展示的內容頂部陰影 mChart.setDrawValueAboveBar(true);//柱狀圖上面的數值是否在柱子上面 mChart.getDescription().setEnabled(false);//是否顯示柱狀圖詳情
mChart.setMaxVisibleValueCount(60);//Y方向的最大值. mChart.setPinchZoom(false);//雙指縮放. mChart.setDrawGridBackground(false);//繪製中心內容區域背景色 mChart.setTouchEnabled(false);//設定不可以觸控 // mChart.setGridBackgroundColor(R.color.color_transparent);
mChart.getXAxis().setGridLineWidth(10f);//X軸上的刻度豎線的寬 XAxis xAxis = mChart.getXAxis();//獲得x座標 xAxis.setDrawLabels(true);//是否顯示x軸上的數值 xAxis.setDrawGridLines(false);//是否顯示豎直標尺線 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//設定x座標的位置 xAxis.setTextColor(Color.TRANSPARENT);//設定x軸上值的顏色 xAxis.setGridColor(R.color.color_transparent); //X軸上的刻度豎線的顏色 xAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) {//設定X軸上值的格式 return String.valueOf((int) value); } }); mChart.getAxisRight().setEnabled(false);//是否顯示最右側豎線 YAxis leftAxis = mChart.getAxisLeft();//獲得y座標 //設定y座標的位置,引數是INSIDE_CHART(Y軸座標在內部) 或 OUTSIDE_CHART(在外部(預設是這個)) leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); leftAxis.setSpaceTop(14f);///分割線的間距百分比 leftAxis.setTextColor(R.color.color_transparent); leftAxis.setTextSize(16f); leftAxis.setDrawGridLines(false);//是否顯示豎直標尺線 leftAxis.setAxisMinimum(0f);//設定y軸最小值 leftAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) { return Math.round(value) + ""; } }); Legend l = mChart.getLegend();//得到圖例 l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);//設定圖例位置居中 l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);//設定圖例位置靠右 l.setOrientation(Legend.LegendOrientation.HORIZONTAL);//設定圖例排列豎直顯示 l.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT); l.setXEntrySpace(10f);//設定圖例在x軸方向上的間距 l.setYEntrySpace(10f);//設定圖例在y軸方向上的間距 l.setForm(Legend.LegendForm.SQUARE); l.setTextSize(12f); l.setFormSize(16f);//設定legend的大小 l.setTextColor(Color.WHITE); setData1(1, 50); } private void setData1(int count, float range) { float start = 1f; ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>(); for (int i = (int) start; i < start + count + 1; i++) { float mult = (range + 1); float val = (float) (Math.random() * mult); yVals1.add(new BarEntry(i, val,mDatas[i % mDatas.length])); } BarDataSet set1; if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0) { set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0); set1.setValues(yVals1); mChart.getData().notifyDataChanged(); mChart.notifyDataSetChanged(); } else { set1 = new BarDataSet(yVals1, ""); set1.setDrawIcons(false); set1.setColors(ColorTemplate.HORIZONTALZHUCHART_COLORS); set1.setValueTextSize(12f); set1.setValueTextColor(Color.WHITE); ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>(); dataSets.add(set1); BarData data = new BarData(dataSets); data.setValueTextSize(10f);//設定柱狀圖上值的字型大小 data.setBarWidth(0.2f);//設定柱狀圖每個柱子的寬度 mChart.setData(data); } } ``` 2)餅狀圖 ``` <com.github.mikephil.charting.charts.PieChart android:id="@+id/piechart1" android:layout_width="260dp" android:layout_height="260dp" ></com.github.mikephil.charting.charts.PieChart> ``` ``` String[] mParties = new String[] {"2棟", "3棟", "4棟", "5棟"}; LineChart mLChart = (LineChart) findViewById(R.id.linechart); private void initData2() { mPChart.setUsePercentValues(true);//設定餅圖使用百分比 mPChart.getDescription().setEnabled(false);//設定不顯示餅圖的詳情 mPChart.setExtraOffsets(0, 20, 5, 5);//設定圖表外,佈局內顯示的偏移量 mPChart.setDrawHoleEnabled(true); //設定餅圖中間空 mPChart.setHoleColor(ColorTemplate.getHoloBg());//設定餅圖中間空的顏色 mPChart.setTransparentCircleColor(ColorTemplate.getHoloBg());//設定透明圓的顏色 mPChart.setTransparentCircleRadius(61f);//設定透明圓的半徑 mPChart.setTransparentCircleAlpha(110);//設定透明圓的透明度 mPChart.setHoleRadius(60f); //設定中空的圓的半徑 mPChart.setDrawCenterText(false);//設定餅圖中間是否有文字 mPChart.setRotationEnabled(false);//設定餅圖是否可以旋轉 mPChart.setHighlightPerTapEnabled(true);//設定為false以防止值由敲擊姿態被突出顯示。預設值為true。 setData2(4, 100); mPChart.animateY(0, Easing.EasingOption.EaseInOutQuad);//設定動畫速度 Legend l = mPChart.getLegend();//得到餅圖圖例 l.setVerticalAlignment(Legend.LegendVerticalAlignment.CENTER);//設定餅圖位置在中間 l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);//設定餅圖位置在右邊 l.setOrientation(Legend.LegendOrientation.VERTICAL);//設定餅圖圖例豎直顯示 l.setDrawInside(false);//設定圖例在餅圖外側 l.setXEntrySpace(25f);//設定圖例在x軸方向上的間距 l.setYEntrySpace(15f);//設定圖例在y軸方向上的間距 l.setFormSize(16f);//設定legend的大小 l.setTextColor(Color.WHITE); l.setYOffset(10f); } private void setData2(int count, float range) { float mult = range; ArrayList<PieEntry> entries = new ArrayList<PieEntry>(); for (int i = 0; i < count; i++) { entries.add(new PieEntry((float) ((Math.random() * mult) + mult / 5), mParties[i % mParties.length], null)); } PieDataSet dataSet = new PieDataSet(entries, ""); dataSet.setDrawIcons(false); dataSet.setSliceSpace(5f); dataSet.setIconsOffset(new MPPointF(0, 40)); dataSet.setSelectionShift(9f); ArrayList<Integer> colors = new ArrayList<Integer>(); for (int c : ColorTemplate.MATERIAL_COLORS) colors.add(c); colors.add(ColorTemplate.getHoloBlue()); dataSet.setColors(colors); PieData data = new PieData(dataSet); data.setValueFormatter(new PercentFormatter()); data.setValueTextSize(11f); data.setValueTextColor(Color.TRANSPARENT); mPChart.setDrawSliceText(false);//不顯示餅圖內元素文字 mPChart.setData(data); mPChart.highlightValues(null); mPChart.invalidate(); }

3)折線圖

 <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/linechart"
        android:layout_width="680dp"
        android:layout_height="310dp"
        ></com.github.mikephil.charting.charts.LineChart>
     BarChart mChart = (BarChart) findViewById(R.id.chart1);
     private void initData3() {
            mLChart.getDescription().setEnabled(false);
            mLChart.setTouchEnabled(false);
            mLChart.setDragEnabled(false);
            mLChart.setScaleEnabled(false);
            mLChart.setDrawGridBackground(false);
            mLChart.setNoDataText("暫無折線圖資料");//如果沒有資料的時候,會顯示這個
            XAxis xAxis = mLChart.getXAxis();//x軸樣式
            xAxis.setTextColor(Color.WHITE);
            xAxis.setDrawAxisLine(false);//是否繪製座標軸的線,即含有座標的那條線,預設是true
            xAxis.setGridColor(Color.TRANSPARENT);//X軸上的刻度豎線的顏色
            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
            xAxis.setAxisLineColor(Color.TRANSPARENT);
            xAxis.setValueFormatter(new IAxisValueFormatter() {
                @Override
                public String getFormattedValue(float value, AxisBase axis) {
                    return Math.round(value) + "";
                }
            });
            YAxis leftAxis = mLChart.getAxisLeft();
            leftAxis.setTextColor(Color.TRANSPARENT);
            leftAxis.setAxisMaximum(100f);//設定y軸的最大值
            leftAxis.setAxisMinimum(0f);//設定x軸的最小值
            leftAxis.setDrawAxisLine(false);//是否繪製座標軸的線,即含有座標的那條線,預設是true
            // 隱藏縱橫網格線
            mLChart.getXAxis().setDrawGridLines(false);
            mLChart.getAxisLeft().setDrawGridLines(false);
            mLChart.getAxisRight().setDrawGridLines(false);
            leftAxis.setAxisLineColor(Color.TRANSPARENT);
            leftAxis.setDrawZeroLine(false);
            leftAxis.setValueFormatter(new IAxisValueFormatter() {
                @Override
                public String getFormattedValue(float value, AxisBase axis) {
                    return Math.round(value) + "";
                }
            });
            mLChart.getAxisRight().setEnabled(false);
            Legend mLegend = mLChart.getLegend();
            mLegend.setEnabled(false);
            setData3(30, 100);
            mLChart.animateX(0);
        }
            private void setData3(int count, float range) {
            ArrayList<Entry> values = new ArrayList<Entry>();
            for (int i = 0; i < count; i++) {
                float val = (float) (Math.random() * range) + 3;
                values.add(new Entry(i, val, null));
            }
            LineDataSet set1;
            if (mLChart.getData() != null &&
                    mLChart.getData().getDataSetCount() > 0) {
                set1 = (LineDataSet) mLChart.getData().getDataSetByIndex(0);
                set1.setValues(values);
                mLChart.getData().notifyDataChanged();
                mLChart.notifyDataSetChanged();
            } else {
                set1 = new LineDataSet(values, "");
                set1.setDrawIcons(false);
                set1.setColor(Color.TRANSPARENT);
                set1.setDrawCircles(false);//是否要畫折線上的圓
                set1.setLineWidth(0f);//線寬度
                set1.setFillAlpha(65);//透明度
                set1.setValueTextSize(12f);//設定折線上值的字型大小
                set1.setCubicIntensity(0.05f);//設定折線平滑度
                set1.setValueTextColor(Color.WHITE);
                set1.setDrawFilled(true);//折線下是否填充
                set1.setFormLineWidth(0f);
                set1.setFormSize(16.f);
                set1.setFillDrawable(ContextCompat.getDrawable(this, R.drawable.bg_chart_orange));//設定填充的顏色
                ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
                dataSets.add(set1);
                LineData data = new LineData(dataSets);
                mLChart.setData(data);
            }
        }

3、更多

相關推薦

Android折線

1、效果圖 2、程式碼 1)compile ‘com.github.PhilJay:MPAndroidChart:v3.0.1’ 2)柱狀圖 <com.github.mikephil.charting.charts.BarChart

Android之玩轉MPAndroidChart讓(折線雜湊雷達)優雅的舞動

package com.example.chenyu.mpandroidcharttest; import android.app.Fragment; import android.graphics.Color; import android.os.Bundle; import android.suppor

PHP jpgraph庫的配置及生成統計圖表:折線

此文為轉載,僅作儲存文件使用,轉自:http://blog.csdn.net/aoshilang2249/article/details/46956163 注意:原文中提到配置php.ini中的include_path,親測不需要配置(gd2需要開啟),只需要將下載的檔案引入專案即可

echarts之(bar)(pie)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>echartsLineTest</title>

原生js和canvas實現的 折線

轉載來自https://blog.csdn.net/u013302113/article/details/77985744 <html> <head lang="en"> </head> <body> &

echarts 外掛開發折線(具有詳細的註釋)

<div id="popInfoDriverTotal" class="popBox" style="left:50px; top:60px"> <h2 class="gytitle"><em>分析圖表</em><spa

java 生成等圖片

package com.sinosoft.webmodule.landLibrary; import java.awt.Color; import java.awt.Font; import java.io.File; import java.io.FileOutputSt

android開源圖表庫MPAndroidChart(曲線圖直方圖

一個可以拖動縮放的圖表庫,包含曲線圖、直方圖、餅狀圖,其中直方圖支援3d效果。 該庫的可擴充套件性強,程式碼相對規範,最近一次更新有很大改進,如果不喜歡AChartEngine的過於複雜可以考慮在此庫的基礎上開發自己的圖表類。 linechart 填充式lineCha

WPF專案中使用折線

在開發的過程中,可能會遇到柱狀圖、餅狀圖、折線圖來更好的顯示資料,最近整理了一下,遂放出來望需要的朋友可以參考。本文僅僅是簡單顯示,如需複雜顯示效果請參考官網程式碼示例。----本文程式碼使用WPF,Silverlight類似程式碼,使用第三方wpf_visifire_v5

Android】achartengine的的使用

原文地址:http://www.cnblogs.com/wangcan/p/3459551.html 本文介紹了android中如何使用achartengine繪製餅圖和柱狀圖,請分別嘗試餅圖和柱狀圖。 程式碼中的註釋解釋了圖示中的各種設定的使用方法。 一.acha

JavaWeb視覺化:Web+Echarts案例:豆瓣日劇豆列電影資訊視覺化(折線

柱狀圖案例 柱狀圖用來比較多專案的數值情況,從構成上來說,柱狀圖以座標軸上的長方形元素作為變數,以此來達到展現並比較資料情況的目的。柱狀圖形式多種多樣,以適應不同場合資料展示,常用的有如下形式: 常用配置項引數: title:標題元件,包含主標題和副標題。 t

ECharts系列:玩轉ECharts之常用折線散點關係樹)

一.背景 最近產品叫我做一些集團系列的統計圖,包括集團組織、協作、銷售、採購等方面的。作為一名後端程式設計師,於是趁此機會來研究研究這個庫。 如果你僅僅停留在用的層面,那還是蠻簡單的。 二.介紹 ECharts,縮寫來自Enterprise Charts,商業級資料圖表,它最初是為了滿足公司商業體系裡各種業務

JavaScript

column 註意 文件 label max number span item pointf <script type="text/javascript"> $(function () { $(‘#container_2‘).highcharts({

ECharts 報表事件聯動系列三:實現聯動

餅狀圖 img and int js函數 radius func get 執行 源碼如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type

Echarts折線案例

/*  * name       :tuzuoquan  * mail       :[email protected]  * date       :2016/11/27  * version    :1.0  * description:  * CopyRight (C)

Web在jsp頁面中生成折線

一、前言 在實際開發過程中,柱狀圖,折線圖,餅狀圖在一些OA,ERP中是非常常見的功能,特別是需求方是業務型,資料分析型公司,下面的例子簡單實現了餅狀圖,柱狀圖,折線圖在jsp中生成。(ps:新手上路,不喜勿噴) 二、前期準備 1.使用的框架:s

基於SpringMVC框架使用ECharts3.0實現折線,的繪製

頁面部分:<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l

vc6.0畫走勢折線的準備工作

VC中畫這些圖,需要使用到畫圖控制元件,步驟如下: 1.下載MSCHART20.OCX ,放到C:\Windows\System32目錄下。 2.註冊控制元件。在cmd中鍵入 regsvr32 C:\Windows\System32\mschart20.ocx; 3 將控制

Java建立柱

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

使用MPAndroidChart繪製多條折線部分問題備錄

餅狀圖 餅狀圖基本使用 /** * 繪製PieChart(餅圖) * * @param entries */ private void drawPieChart(ArrayList<PieEntry> entries