Android 双颜色柱形图,MPAndroidChart---双柱形示例(提供完整代码)

需求:绘制12个月份的温度和风极双柱形

效果图:

c452f9d3c355

双柱形示意图

完整源码:

public class TwoBarChartActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_two_bar_chart);

BarChart twoBarChart = findViewById(R.id.twoBarChart);

/**

* 需求:绘制12个月份的温度和风极双柱形

*/

List temperatures = Arrays.asList(20f, 24f,30f,40f,50f,60f,40f,20f,80f,40f,20f,80f);

List fengs = Arrays.asList(25f, 30f,40f,40f,60f,60f,70f,20f,30f,40f,10f,80f);

final List xList = Arrays.asList("一月", "二月","三月","四月","五月", "六月","七月","八月","九月", "十月","十一月","十二月");

//设置曲线整体的配置

twoBarChart.setNoDataText("暂无数据");

//设置绘制动画

twoBarChart.animateXY(1000, 1000);

//隐藏说明

twoBarChart.getDescription().setEnabled(false);

//设置X轴

XAxis xAxis = twoBarChart.getXAxis();

xAxis.setAxisMinimum(0f); //要设置,否则右侧还有部分图表未展示出来

xAxis.setAxisMaximum(xList.size()); //要设置,否则右侧还有部分图表未展示出来

xAxis.setLabelCount(12,false); //要设置

xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

//设置要不要X轴的网格,就是网格的竖线

xAxis.setDrawGridLines(false);

//将X轴的值显示在中央

xAxis.setCenterAxisLabels(true);

xAxis.setValueFormatter(new IAxisValueFormatter() {

@Override

public String getFormattedValue(float value, AxisBase axis) {

//用(int) Math.abs(value) % xList.size()防止越界

return xList.get((int) Math.abs(value) % xList.size());

}

});

//设置Y轴

YAxis rightYAxis = twoBarChart.getAxisRight();

//隐藏右边Y轴

rightYAxis.setEnabled(false);

YAxis leftYAxis = twoBarChart.getAxisLeft();

//设置网格为虚线

leftYAxis.enableGridDashedLine(10f, 10f, 0f);

List dataSets = new ArrayList<>();

//设置温度数据

List entries = new ArrayList<>();

for (int i = 0; i < 12; i++) {

entries.add(new BarEntry(i, temperatures.get(i)));

}

BarDataSet barDataSet = new BarDataSet(entries, "温度示例");

//设置柱形的颜色

barDataSet.setColor(Color.parseColor("#0000ff"));

dataSets.add(barDataSet);

//设置风级数据

List entries2 = new ArrayList<>();

for (int i = 0; i < 12; i++) {

entries2.add(new BarEntry(i, fengs.get(i)));

}

BarDataSet barDataSet2 = new BarDataSet(entries2, "风级示例");

//设置柱形的颜色

barDataSet2.setColor(Color.parseColor("#ff0000"));

dataSets.add(barDataSet2);

BarData data = new BarData(dataSets);

//关键

/**

* float groupSpace //柱状图组之间的间距

* float barSpace //每条柱状图之间的间距 一组两个柱状图

* float barWidth //每条柱状图的宽度 一组两个柱状图

* (barWidth + barSpace) * barAmount + groupSpace = 1.00

* 3个数值 加起来 必须等于 1 即100% 按照百分比来计算 组间距 柱状图间距 柱状图宽度

*/

int barAmount = dataSets.size(); //需要显示柱状图的类别 数量

//设置组间距占比30% 每条柱状图宽度占比 70% /barAmount 柱状图间距占比 0%

float groupSpace = 0.3f; //柱状图组之间的间距

float barSpace = 0.05f;

float barWidth = (1f - groupSpace) / barAmount - 0.05f;

//设置柱状图宽度

data.setBarWidth(barWidth);

//(起始点、柱状图组间距、柱状图之间间距)

data.groupBars(0f, groupSpace, barSpace);

twoBarChart.setData(data);

}}

有问题可私信或者评论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值