android 简单折线图,Android -- 简单实现MPAndroidChart曲线图

一. 配置

(1)model下build.gradle implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1'

(2)project下build.gradle allprojects { repositories { jcenter() maven { url 'https://jitpack.io' } } }

二. 使用

(1)main_layout布局 <?xml version="1.0" encoding="utf-8"?>

(2)MainActivity.java /** * 曲线图 */ public class MainActivity extends AppCompatActivity { LineChart lineChart; XAxis xAxis; YAxis leftYAxis; YAxis rightYaxis; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init(){ lineChart = findViewById(R.id.lineChart); //显示边界 lineChart.setDrawBorders(false); //显示网格线 lineChart.setDrawGridBackground(false); /***XY轴的设置***/ xAxis = lineChart.getXAxis(); leftYAxis = lineChart.getAxisLeft(); rightYaxis = lineChart.getAxisRight(); //X轴设置显示位置在底部 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setAxisMinimum(0f); xAxis.setGranularity(1f); //保证Y轴从0开始,不然会上移一点 leftYAxis.setAxisMinimum(0f); rightYaxis.setAxisMinimum(0f); xAxis.setDrawGridLines(false); rightYaxis.setDrawGridLines(false); leftYAxis.setDrawGridLines(true); leftYAxis.enableGridDashedLine(10f, 10f, 0f); rightYaxis.setEnabled(false); /***折线图例 标签 设置***/ Legend legend = lineChart.getLegend(); //设置显示类型,LINE(线) CIRCLE(圆) SQUARE(方) EMPTY(无) 等等 多种方式,查看LegendForm 即可 legend.setForm(Legend.LegendForm.LINE); legend.setTextSize(25f); //描述显示位置 右上方 legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); //是否绘制在图表里面 legend.setDrawInside(false); //设置数据 List entries = new ArrayList<>(); Random random = new Random(); for (int i = 0; i < 10; i++) { entries.add(new Entry(i, random.nextInt(10) * 8)); Log.i("1111111", i + " : " + random.nextInt(10) * 8); } Description description = new Description(); // description.setText("需要展示的内容"); description.setEnabled(false); lineChart.setDescription(description); //一个LineDataSet就是一条线 LineDataSet lineDataSet = new LineDataSet(entries, "PM2.5"); lineChart.setData(initLine(lineDataSet, getResources().getColor(R.color.colorYell))); setMarkerView(); } /** * 初始化曲线,多条多次调用 * * @param lineDataSet * @param color * @return */ private LineData initLine(LineDataSet lineDataSet, int color) { //设置颜色 // lineDataSet.setColor(color); // lineDataSet.setCircleColor(color); //设置曲线值的圆点 lineDataSet.setDrawCircleHole(true); lineDataSet.setValueTextSize(10f); //内部填充 lineDataSet.setDrawFilled(true); lineDataSet.setFormLineWidth(1f); lineDataSet.setFormSize(15.f); //设置为曲线图 lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER); LineData data1 = new LineData(); data1.addDataSet(lineDataSet); return data1; } /** * 点击后弹出方框显示数据 */ public void setMarkerView() { LineChartMarkView mv = new LineChartMarkView(this, xAxis.getValueFormatter()); mv.setChartView(lineChart); lineChart.setMarker(mv); lineChart.invalidate(); } }

(3)用到的工具类LineChartMarkView.java public class LineChartMarkView extends MarkerView { private TextView tvDate; private TextView tvValue; private IAxisValueFormatter xAxisValueFormatter; DecimalFormat df = new DecimalFormat(".00"); public LineChartMarkView(Context context, IAxisValueFormatter xAxisValueFormatter) { super(context, R.layout.layout_markview); this.xAxisValueFormatter = xAxisValueFormatter; tvDate = findViewById(R.id.tv_date); tvValue = findViewById(R.id.tv_value); } @SuppressLint("SetTextI18n") @Override public void refreshContent(Entry e, Highlight highlight) { //展示自定义X轴值 后的X轴内容 tvDate.setText(xAxisValueFormatter.getFormattedValue(e.getX(), null)); tvValue.setText("温度:" + df.format(e.getY())); super.refreshContent(e, highlight); } @Override public MPPointF getOffset() { return new MPPointF(-(getWidth() / 2), -getHeight()); } }

如果有报错就是选错包了,换一个试一下

至此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据可视化堆积折线图是一种常用的数据可视化方式,可以用来展示多个数据系列在不同时间或者其他维度上的变化趋势,并且可以将这些数据系列叠加在一起展示。 在HBuilder中,你可以使用一些常见的数据可视化库来实现堆积折线图的绘制,比如ECharts、Highcharts等。这些库提供了丰富的配置选项和API,可以帮助你灵活地定制和展示堆积折线图。 以下是使用ECharts库在HBuilder中绘制堆积折线图简单示例: 1. 引入ECharts库: ```html <script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script> ``` 2. 创建一个具有一定宽高的DOM容器: ```html <div id="chart" style="width: 600px; height: 400px;"></div> ``` 3. 编写JavaScript代码,配置和绘制堆积折线图: ```javascript // 初始化echarts实例 var myChart = echarts.init(document.getElementById('chart')); // 配置项 var option = { title: { text: '堆积折线图示例' }, tooltip: { trigger: 'axis' }, legend: { data: ['数据系列1', '数据系列2', '数据系列3'] }, xAxis: { type: 'category', data: ['一月', '二月', '三月', '四月', '五月', '六月'] }, yAxis: { type: 'value' }, series: [ { name: '数据系列1', type: 'line', stack: '总量', data: [120, 132, 101, 134, 90, 230] }, { name: '数据系列2', type: 'line', stack: '总量', data: [220, 182, 191, 234, 290, 330] }, { name: '数据系列3', type: 'line', stack: '总量', data: [150, 232, 201, 154, 190, 330] } ] }; // 使用配置项绘制图表 myChart.setOption(option); ``` 这样就可以在HBuilder中绘制一个简单的堆积折线图了。你可以根据自己的需求,调整配置项和数据,来实现更加丰富和复杂的堆积折线图效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值