Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MPAndroidChart_水平条形图的那些事

MPAndroidChart_水平条形图的那些事

作者头像
Petterp
发布于 2022-02-09 03:15:31
发布于 2022-02-09 03:15:31
1.9K00
代码可运行
举报
文章被收录于专栏:JetPackJetPack
运行总次数:0
代码可运行

MPAndroidChart攻略——HorizontalBarChart 的点点滴滴。 MPAndroidChart_折线图的那些事 MPAndroidChart_饼图的那些事 MPAndroidChart_动态柱状图 MPAndroidChart_水平条形图的那些事 MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。 MPAndroidChart_雷达图的那些事及自定义标签颜色

水平条形图?也就是倒起来的柱状图,简单理解可以为,将正常的图表顺时针旋转90度,其x轴,y轴对应关系如下。

简单明了吧,就是打个转而已,好了,现在开始熟悉它的相关方法,其实和柱状图没区别。。。

直接附上代码,相应的注释也在其中,如果有不懂的,可以看我别的文章。有些方法通用就没有必要再演示了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MainActivity extends AppCompatActivity {
    private HorizontalBarChart chart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        chart = findViewById(R.id.chart);

        XAxis xAxis = chart.getXAxis();
        //取消x轴横线
        xAxis.setDrawAxisLine(true);
        //取消x轴竖线
        xAxis.setDrawGridLines(false);
        //设置x轴位于底部
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //显示3个标签 (不一定准确,如果要准确显示,请带上true)
        xAxis.setLabelCount(3);
        // x轴最大长度3f (注意自定义标签时,它与BarEntry(x,y),与x的关系)
        xAxis.setAxisMaximum(3);
        // x轴标签字体大小
        xAxis.setTextSize(20f);
        //自定义X轴
        final List<String> list=new ArrayList<>();
        list.add("昨天");
        list.add("今天");
        list.add("明天");
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return  value>2?"":list.get((int) value);
            }
        });

        //在定义y轴的时候,需要两边都进行设置,而不是直接setEnabled禁用。否则将产生数据偶尔不显示的问题
        YAxis left = chart.getAxisLeft();
        left.setAxisMinimum(0);
        left.setDrawGridLines(false);
        left.setDrawAxisLine(false);



        YAxis right = chart.getAxisRight();
        right.setDrawGridLines(false);
        right.setDrawAxisLine(true);
        right.setTextSize(20f);
        right.setLabelCount(11);
        right.setAxisMinimum(0);
        // y轴最大长度100f (注意自定义标签时,它与BarEntry(x,y),与y的关系)
        right.setAxisMaximum(100f);

        //自定义Y轴
        final List<String> listY = new ArrayList<>();
        for (int i = 0; i <= 100; i += 10) {
            listY.add(i + "%");
        }
        right.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return value>100?"":listY.get((int) value/10);
            }
        });


        //将图表底部向上偏移10f
        chart.setExtraBottomOffset(10);
        //将图表右边靠左偏移10f
        chart.setExtraRightOffset(10);
        //禁用描述
        chart.getDescription().setEnabled(false);
        //禁用图例
        chart.getLegend().setEnabled(false);

        //随机3个数
        setData(3);
    }

    private void setData(int postion) {
        List<BarEntry> list = new ArrayList<>();
        for (int i = 0; i < postion; i++) {
            list.add(new BarEntry(i, (float) (Math.random() * 101)));
        }

        BarDataSet set = new BarDataSet(list, "");
        //取消显示标签
        set.setDrawValues(false);
        //设置多种颜色,如果x长度大于颜色个数,将随机赋予颜色
        set.setColors(Color.RED,Color.BLACK,Color.BLUE);
        BarData data = new BarData(set);
        //设置轴的宽度
        data.setBarWidth(0.4f);
        chart.setData(data);
        chart.invalidate();
    }

}

最后,再说一下自定义x,y轴时需要注意的:

注意我上面代码里设置 x轴,y轴最大长度时的注释,与 BarEntry(x,y) 中的x,y密切相关。 一般情况下我们无需特意去设置 x,y轴的标签,但有时候的需求需要这几个值自定义并且不变,就像上面Demo里的百分比一样。 先说一下 setLabelCount这个方法,它设置的是显示的标签数。但是并不一定准确 setAxisMaximum 它与x的大小有关,MPandroidchart 在 将数据添加到图表中时,因为x不固定大小,所以在每次绘制时,会以最大的x值和标签的个数来规定标签的显示,及就是value从0开始增加,执行标签个数次。同理y轴也是一样的。 如图:

所以我们如果要自定义x轴或者y轴时,一定要注意 x轴或y轴的最大长度,配合设置标签数才可以更加得心应手。

3.12补充

今天使用的时候发现了一个问题,我的y轴数据为啥偶尔不显示了? 原因是因为有一方的最小y轴长度没有设置,在使用别的图时,我们直接setEnabled禁用即可。但是在水平图里面,这样是千万不行的。 原因是因为,水平图表 需要你的两条y轴确定一个点来定位,但是我们一般只对一个轴进行设置,所以就会产生数据点不显示的情况。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Ohos-MPChart——支持多种图表绘制的组件
Ohos-MPChart是OpenAtom OpenHarmony(简称“OpenHarmony”)系统显示各种图表视图的三方组件,用于声明式应用开发,提供了多种多样的图表视图,包括折线图、曲线图、柱形图、饼状图、K线图、雷达图、气泡图。适用于各种统计后的数据以视觉直观的方式呈现。
小帅聊鸿蒙
2025/04/21
1170
Ohos-MPChart——支持多种图表绘制的组件
MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。
MPAndroidChart攻略——BarChart并列柱状图的点点滴滴。 MPAndroidChart_折线图的那些事 MPAndroidChart_饼图的那些事 MPAndroidChart_动态柱状图 MPAndroidChart_水平条形图的那些事 MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。 MPAndroidChart_雷达图的那些事及自定义标签颜色 昨天在比赛中遇到了MP的并列柱状图,看网上对这方面记录并不是很多,所以今天就做一个教程吧。 先看简
Petterp
2022/02/09
1.6K0
MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。
MPAndroidChart_动态柱状图
MPAndroidChart攻略——BarChart的点点滴滴。 MPAndroidChart_折线图的那些事 MPAndroidChart_饼图的那些事 MPAndroidChart_动态柱状图 MPAndroidChart_水平条形图的那些事 MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。 MPAndroidChart_雷达图的那些事 需求:显示最近20条的数据,而且500毫秒秒刷新一次,每次都要求数据最新。 解决办法: 使用List储存,每次存储
Petterp
2022/02/09
1.4K0
MPAndroidChart_动态柱状图
MPAndroidChart_折线图的那些事
看效果还挺不错吧,但是我们实际开发时,往往需求没这么简单,下面,我们来对折线图各种方法进行一个总结。
Petterp
2022/02/09
4K0
MPAndroidChart_折线图的那些事
安卓MPAndroidChart绘制柱状图
首先是添加Jar包 进入Gradle Scripts的目录,添加Jar包都在这里 首先是Project这个的allprojects里面加上一行 allprojects { repositories { google() jcenter() maven { url "https://jitpack.io" } } } 在app这个里面denpendencies中弄成这样子的 dependencies { implementat
SingYi
2022/07/14
9690
安卓MPAndroidChart绘制柱状图
Android——MPAndroidChart折线图/柱状图/饼形图的使用
【背景】:项目中需要使用到图表,于是找了目前非常热门的开源图表,折线图/柱状图/饼图等应有尽有,各种效果实现都很给力,附上github链接,有原DEMO,github是最好的老师,看DEMO例程源码,相比在网上泛泛的查资料要高效的多。https://github.com/PhilJay/MPAndroidChart
Winter_world
2020/09/25
3.6K0
Android——MPAndroidChart折线图/柱状图/饼形图的使用
MPchart使用详解及详细属性(一)
项目源代码:https://github.com/libin7278/MpChart
先知先觉
2019/01/21
7.1K0
MPAndroidChart_RadarChart雷达图的那些事
重写这两个类 RadarChart和 XAxisRendererRadarChart。其实也就是更改一个方法,别觉得有什么太困难。
Petterp
2022/02/09
2K0
MPAndroidChart_RadarChart雷达图的那些事
android详解_MPAndroidChart
首先依赖 1. implementation ‘com.github.PhilJay:MPAndroidChart:v3.0.3’
全栈程序员站长
2022/09/20
1.3K0
android详解_MPAndroidChart
MPAndroidChart总结
第一天 LineChart的常用属性 lineChart.setDrawBorders(false);//设置绘制边界 lineChart.setDescription("最大值是: "+ max+",最小值是:"+min);// 数据描述 lineChart.setDescriptionTextSize(16f);//数据描述字体大小, 最小值6f, 最大值16f. lineChart.setDescriptionPosition(2500f,50f);//数据描述字体的位置 lineCha
对话、
2022/02/22
1.1K0
Android 图表开发开源库MPAndroidChart
图1的效果不是用这个实现的,如果感兴趣可以参考我这篇文章  Android渐变圆环
再见孙悟空_
2023/02/10
2.1K0
Android 图表开发开源库MPAndroidChart
MPAndroidChart 之实现底部显示的自定义MarkerView
接到一个需求需要折线图显示数据,权衡利弊后没有自己手绘哦,毕竟怕耽搁时间(或许也是怕写一半写不出来 哈哈哈),所以首选当然是之前接触过的MPAndroidChart,毕竟它很强很强很强。。。
木溪bo
2020/06/22
3.9K0
纯血鸿蒙APP第三方库——MpChart运动健康场景实践案例
MpChart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图,股价走势图等场景中使用,方便开发者快速实现图表UI,MpChart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图等自定义图表库。
小帅聊鸿蒙
2025/01/20
1210
安卓MPAndroidChart绘制多层级的堆叠条形图
这次是在上一篇的基础上增加的,所以导包这些啥的就跳过了研究了一下代码,发现主要的区别就在于增加data的时候,第二个参数传递的是一个数组,然后就变成了堆叠条形图。
SingYi
2022/07/14
1.3K0
安卓MPAndroidChart绘制多层级的堆叠条形图
MPAndroidChart_饼图的那些事
MPAndroidChart攻略——PieChartt的点点滴滴。 MPAndroidChart_折线图的那些事 MPAndroidChart_饼图的那些事 MPAndroidChart_动态柱状图 MPAndroidChart_水平条形图的那些事 MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。 MPAndroidChart_雷达图的那些事及自定义标签颜色 目录 从简易Demo开始 1. 百分比的设置 2. 标签的设置(标签就是扇形图里的文字) 3. 饼心的设
Petterp
2022/02/09
2.4K0
MPAndroidChart_饼图的那些事
安卓MPAndroidChart绘制水平柱状图
这个和垂直柱状图一模一样,只不过把控件名换了一下从barchart换成了HorizontalBarChart
SingYi
2022/07/14
7390
安卓MPAndroidChart绘制水平柱状图
刷爆全网的动态条形图,原来5行Python代码就能实现!
比如数可视的「花火hanabi」,嫡数的「镝数图表」,以及国外网站「Flourish」。
小F
2020/10/09
2.1K0
刷爆全网的动态条形图,原来5行Python代码就能实现!
HarmonyOS-Codelabs系列挑战之构建你的数据应用
整体上是在官方的Demo基础上做的,这里把官方的Demo放在这里,感兴趣小伙伴可以看看:【JS基础组件】switch、chart的使用
山河已无恙
2023/03/02
2820
Plotly,一个超强的Python可视化库!
数据可视化是数据分析和探索的一个重要方面,它有助于深入了解数据集中的潜在模式、趋势和关系。
小F
2023/12/21
5810
Plotly,一个超强的Python可视化库!
Python绘制柱状图之可视化神器Pyecharts
数据可视化在数据分析和展示中扮演着重要的角色。而柱状图是一种常用于展示离散数据的图表类型,可以清晰地展示数据之间的差异。在Python中,有许多数据可视化库可供选择,其中之一是Pyecharts。Pyecharts是一个基于Echarts的Python库,提供了丰富的图表类型和可定制性,使得绘制柱状图变得非常简单。本文将介绍如何使用Pyecharts绘制各种类型的柱状图,并深入探讨其功能和定制选项。
IT_陈寒
2023/12/13
5410
Python绘制柱状图之可视化神器Pyecharts
相关推荐
Ohos-MPChart——支持多种图表绘制的组件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验