如何解决使用MPAndroidChart库在Android中创建折线图
我想创建一个如图所示的图表。到目前为止,我已经尝试使用MPAndroidChart来实现它。
但是,到目前为止,我已经尝试了并且无法实现。
我的代码如下:
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="vertical"
tools:ignore="HardcodedText">
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/lineChart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
活动文件:
package com.app.androidchart;
import android.graphics.Color;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawLineChart();
}
private void drawLineChart() {
LineChart lineChart = findViewById(R.id.lineChart);
List<Entry> lineEntries = getDataSet();
LineDataSet lineDataSet = new LineDataSet(lineEntries,"Work");
lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);
lineDataSet.setHighlightEnabled(true);
lineDataSet.setLineWidth(2);
lineDataSet.setColor(Color.RED);
lineDataSet.setCircleColor(Color.YELLOW);
lineDataSet.setCircleRadius(6);
lineDataSet.setCircleHoleRadius(3);
lineDataSet.setDrawCircles(false);
lineDataSet.setDrawHighlightIndicators(true);
lineDataSet.setHighLightColor(Color.RED);
lineDataSet.setValueTextSize(12);
lineDataSet.setValueTextColor(Color.DKGRAY);
lineDataSet.setMode(LineDataSet.Mode.STEPPED);
LineData lineData = new LineData(lineDataSet);
lineChart.getDescription().setTextSize(12);
lineChart.getDescription().setEnabled(false);
lineChart.setDrawMarkers(false);
lineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
lineChart.animateY(1000);
lineChart.getXAxis().setGranularityEnabled(true);
lineChart.getXAxis().setGranularity(1.0f);
lineChart.setData(lineData);
ArrayList<String> xAxisLabel = new ArrayList<>();
xAxisLabel.add("Rest");
xAxisLabel.add("Work");
xAxisLabel.add("2-up");
XAxis xAxis = lineChart.getXAxis();
xAxis.setAxisMaximum(3);
xAxis.setGranularity(1f);
xAxis.setValueFormatter(new IndexAxisValueFormatter(xAxisLabel) {
@Override
public String[] getValues() {
return super.getValues();
}
});
YAxis yAxis = lineChart.getAxisLeft();
yAxis.setAxisMinimum(0);
yAxis.setAxisMaximum(24);
lineChart.getAxisRight().setEnabled(false);
lineChart.invalidate();
}
private List<Entry> getDataSet() {
List<Entry> lineEntries = new ArrayList<>();
lineEntries.add(new Entry(0,4));
lineEntries.add(new Entry(1,3));
lineEntries.add(new Entry(2,6));
lineEntries.add(new Entry(3,8));
lineEntries.add(new Entry(4,2));
lineEntries.add(new Entry(5,3));
lineEntries.add(new Entry(6,1));
return lineEntries;
}
}
以上是根据共享图像实现的全部代码。
我需要以下解决方案:
- 将X轴设置在左侧
- 将Y轴设置在顶部
- 分配数据,其中X轴包含3个项目,Y轴包含24个项目(这里在MPAndroid Chart的Entry类中没有找到任何方法。)
请给我建议一些解决方案。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。