教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条

来源:网络收集 时间:2026-08-17
导读: Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图 Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图 实际上这样就导致了我们的代码是比较类似的,先来看下我们的基本实现 一.基本实现 布局还是那个布局,只不过是横向

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

实际上这样就导致了我们的代码是比较类似的,先来看下我们的基本实现

一.基本实现

布局还是那个布局,只不过是横向的了

<com.github.mikephil.charting.charts.HorizontalBarChart

android:id="@+id/mHorizontalBarChart"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"/>

而初始化这些也都是大同小异

//正负堆叠条形图

mHorizontalBarChart = (HorizontalBarChart) findViewById(R.id.mHorizontalBarChart);

mHorizontalBarChart.setOnChartValueSelectedListener(this);

mHorizontalBarChart.setDrawGridBackground(false);

mHorizontalBarChart.getDescription().setEnabled(false);

// 扩展现在只能分别在x轴和y轴

mHorizontalBarChart.setPinchZoom(false);

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

mHorizontalBarChart.setDrawBarShadow(false);

mHorizontalBarChart.setDrawValueAboveBar(true); mHorizontalBarChart.setHighlightFullBarEnabled(false);

mHorizontalBarChart.getAxisLeft().setEnabled(false); mHorizontalBarChart.getAxisRight().setAxisMaximum(25f); mHorizontalBarChart.getAxisRight().setAxisMinimum(-25f); mHorizontalBarChart.getAxisRight().setDrawGridLines(false); mHorizontalBarChart.getAxisRight().setDrawZeroLine(true); mHorizontalBarChart.getAxisRight().setLabelCount(7, false); mHorizontalBarChart.getAxisRight().setValueFormatter(new CustomFormatter()); mHorizontalBarChart.getAxisRight().setTextSize(9f);

XAxis xAxis = mHorizontalBarChart.getXAxis();

xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);

xAxis.setDrawGridLines(false);

xAxis.setDrawAxisLine(false);

xAxis.setTextSize(9f);

xAxis.setAxisMinimum(0f);

xAxis.setAxisMaximum(110f);

xAxis.setCenterAxisLabels(true);

xAxis.setLabelCount(12);

xAxis.setGranularity(10f);

//日期格式化

xAxis.setValueFormatter(new IAxisValueFormatter() {

private DecimalFormat format = new DecimalFormat("###");

@Override

public String getFormattedValue(float value, AxisBase axis) {

return format.format(value) + "-" + format.format(value + 10);

}

@Override

public int getDecimalDigits() {

return 0;

}

});

Legend l = mHorizontalBarChart.getLegend();

l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);

l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);

l.setOrientation(Legend.LegendOrientation.HORIZONTAL);

l.setDrawInside(false);

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

l.setFormSize(8f);

l.setFormToTextSpace(4f);

l.setXEntrySpace(6f);

// 重要:当使用负值在堆叠酒吧,总是确保-值数组中的第一个

ArrayList<BarEntry> yValues = new ArrayList<BarEntry>();

yValues.add(new BarEntry(5, new float[]{-10, 10}));

yValues.add(new BarEntry(15, new float[]{-12, 13}));

yValues.add(new BarEntry(25, new float[]{-15, 15}));

yValues.add(new BarEntry(35, new float[]{-17, 17}));

yValues.add(new BarEntry(45, new float[]{-19, 20}));

yValues.add(new BarEntry(55, new float[]{-19, 19}));

yValues.add(new BarEntry(65, new float[]{-16, 16}));

yValues.add(new BarEntry(75, new float[]{-13, 14}));

yValues.add(new BarEntry(85, new float[]{-10, 11}));

yValues.add(new BarEntry(95, new float[]{-5, 6}));

yValues.add(new BarEntry(105, new float[]{-1, 2}));

BarDataSet set = new BarDataSet(yValues, "全国人口普查");

set.setValueFormatter(new CustomFormatter());

set.setValueTextSize(7f);

set.setAxisDependency(YAxis.AxisDependency.RIGHT);

set.setColors(new int[]{Color.rgb(99, 67, 72), Color.rgb(14, 181, 136)});

set.setStackLabels(new String[]{"男人", "女人"});

String[] xLabels = new String[]{"0-10", "10-20", "20-30", "30-40", "40-50", "50-60", "60-70", "70-80", "80-90", "90-100", "100+"};

BarData data = new BarData(set);

data.setBarWidth(8.5f);

mHorizontalBarChart.setData(data);

mHorizontalBarChart.invalidate();

这里我并没有写setData的方法,直接就模拟了一些数据,可以看出,这个图标是异常的简单,当我们运行之后就可以知道,这个实现的效果和上图的效果是一致的

二.显示顶点值

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

现在我把源码贴上

activity_statkedbar_negative.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://www.77cn.com.cn/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/mHorizontalBarChart"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"/>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

<Button

android:id="@+id/btn_show_values"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="顶点显示值"/>

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图

<Button

androi …… 此处隐藏:10035字,全部文档内容请下载后查看。喜欢就下载吧 ……

Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1568624.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)