横向柱状图

1:  自定义控件

package com.welleplus.yfinspection.formatter;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;

import com.github.mikephil.charting.charts.HorizontalBarChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
import com.welleplus.yfinspection.R;

import java.util.ArrayList;
import java.util.List;

/**
 * Description:
 * Author:zhangmengmeng
 * Date:2018/2/1
 * Time:下午3:44
 */

public class HoroBarView extends RelativeLayout {

    private static final String TAG = "HoroBarView";
    private HorizontalBarChart mChart;


    public HoroBarView(Context context) {
        this(context,null);
    }

    public HoroBarView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public HoroBarView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();

    }

    public void initView() {

        Log.i(TAG, "initView: -------------初始化");
        View view = View.inflate(getContext(), R.layout.item_horo_bar, this);
        mChart = view.findViewById(R.id.chart);


    }

    public void initChartData(List<String> lendata, List<Integer> pnums) {
        Log.i(TAG, "initView: -------------初始化数据");
        //初始化图表
        mChart.setDrawBarShadow(false);

        mChart.setDrawValueAboveBar(true);


        mChart.getDescription().setEnabled(false);
        mChart.setMaxVisibleValueCount(40);
        mChart.setPinchZoom(false);


        mChart.setDrawGridBackground(false);

        MyHoroBarXFormatter formatterX = new MyHoroBarXFormatter(lendata);
        XAxis xl = mChart.getXAxis();   // X 对应Y轴
        xl.setPosition(XAxis.XAxisPosition.BOTTOM);
        xl.setDrawAxisLine(true);
        xl.setDrawGridLines(false);
        xl.setGranularity(1f);
        xl.setLabelCount(40);
//        xl.setCenterAxisLabels(true);
        xl.setAxisMinimum(0.3f);
        xl.setValueFormatter(formatterX);
        xl.setTextColor(Color.BLACK);

        xl.setTextSize(12f);
        mChart.setExtraBottomOffset(10f);


        mChart.getAxisLeft().setEnabled(false);


        MyAxisValueFormatter xFormatter = new MyAxisValueFormatter();
        YAxis yr = mChart.getAxisRight();
        yr.setDrawAxisLine(true);
        yr.setDrawGridLines(true);
        yr.setAxisMinimum(0f); // this replaces setStartAtZero(true)
        yr.setValueFormatter(xFormatter);
        yr.setTextSize(12f);
        yr.setTextColor(Color.BLACK);
//        yr.setInverted(true);

//        setData(12, 50);
        mChart.setFitBars(true);
        mChart.animateY(1000);


        Legend l = mChart.getLegend();
        l.setEnabled(false);
        setChartData(pnums);

    }

    private void setChartData(List<Integer> pnums) {
        ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();

        for(int i=0 ;i<pnums.size();i++){
            yVals1.add(new BarEntry(i+1, pnums.get(i)));
        }
        
        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);

            ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
            dataSets.add(set1);

            BarData data = new BarData(dataSets);
            data.setValueTextSize(10f);
            data.setValueFormatter(new MyBarFormatter());   // 设置柱状图点击竹子的字体
            data.setValueTextColor(Color.BLACK);
            data.setBarWidth(0.8f);
            mChart.setData(data);
        }

    }



}

2:布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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.HorizontalBarChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

3: 使用方法

 List<String> lendata = data.getLendata();
                                List<Integer> pnums = data.getPnums();
                                if(lendata!=null && lendata.size()>0 && pnums!=null && pnums.size()>0){
                                    mHbvChart.initChartData(lendata,pnums);
                                }else{
                                    toast("数据为空");
                                }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值