это один из моих первых проектов с Java и Android Studio.
Я использую MPAndroidChart для создания графика со строкой со случайными данными. Все в порядке, но я не могу понять, как добавить 2 или 3 строки на одном графике.
Может кто-нибудь посоветовать мне или показать мне путь? Я просто хочу отобразить 2-3 строки с разными цветами.
Спасибо!
private RelativeLayout relativeLayout;
private LineChart mChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_graph);
relativeLayout = findViewById(R.id.relativeLayout);
// create line chart
mChart = new LineChart(this);
//add to layout
relativeLayout.addView(mChart);
//customize line chart
//mChart.setNoDataTextDescription("");
mChart.setNoDataText("No data for the moment");
//enable value highlighting
mChart.setHighlightEnabled(true);
//enable touch
mChart.setTouchEnabled(true);
//we want also scaling and dragging
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
mChart.setDrawGridBackground(false);
//enable pinch zoom to avoid scaling x and y axis separately
mChart.setPinchZoom(true);
//alternative backgroundColor
mChart.setBackgroundColor(Color.BLACK);
//now , we work on data
LineData data = new LineData();
data.setValueTextColor(Color.WHITE);
// add data to line chart
mChart.setData(data);
// get legend object
Legend l = mChart.getLegend();
//customize legend
l.setForm(Legend.LegendForm.LINE);
l.setTextColor(Color.WHITE);
XAxis x1 = mChart.getXAxis();
x1.setTextColor(Color.WHITE);
x1.setDrawGridLines(false);
x1.setAvoidFirstLastClipping(true);
YAxis y1 = mChart.getAxisLeft();
y1.setStartAtZero(false);
y1.setTextColor(Color.WHITE);
y1.setAxisMaxValue(50f);
y1.setAxisMinValue(-50f);
y1.setDrawGridLines(false);
YAxis y12 = mChart.getAxisRight();
y12.setEnabled(false);
}
@Override
protected void onPostResume() {
super.onPostResume();
// new, we're going to simulate real time data addition
new Thread(new Runnable() {
@Override
public void run() {
//add 100 entries
for (int i = 0; i < 100; i++) {
runOnUiThread(new Runnable() {
@Override
public void run() {
addEntry();
}
});
// pause between adds
try {
Thread.sleep(60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
//We need to create method to add entry to the line chart
private void addEntry(){
LineData data = mChart.getData();
if (data != null) {
LineDataSet set = data.getDataSetByIndex(0);
if (set == null) {
//creation if null
set = createSet();
data.addDataSet(set);
}
// add a new random value
data.addXValue("");
data.addEntry(new Entry((float)(Math.random())*100f-50f,set.getEntryCount()),0);
//notify chart data have changed
mChart.notifyDataSetChanged();
// limit number if visible entreies
mChart.setVisibleXRange(6);
//scroll to the last entry
mChart.moveViewToX(data.getXValCount()-7);
}
}
private LineDataSet createSet() {
LineDataSet set = new LineDataSet(null,"Accelerometer X [m/s2]");
set.setDrawCubic(true);
set.setCubicIntensity(0.2f);
set.setAxisDependency(YAxis.AxisDependency.LEFT);
set.setColor(ColorTemplate.getHoloBlue());
set.setCircleColor(ColorTemplate.getHoloBlue());
set.setLineWidth(2f);
set.setCircleSize(4f);
set.setFillAlpha(65);
set.setFillColor(ColorTemplate.getHoloBlue());
set.setHighLightColor(Color.rgb(244,117,177));
set.setValueTextColor(Color.WHITE);
set.setValueTextSize(10f);
return set;
}