MPAndroidChart
MPAndroidChart copied to clipboard
MPAndroidChart conditional dataset color in Real time data line chart.
I'm using MP Library chart to show data real time data chart with different color depending on Y value condition in run real time every second data changes.
private LineDataSet set;
private List<Integer> colors = new ArrayList<>();
private LineDataSet createSet() {
set = new LineDataSet(null,"Dynamic Data");
set.setAxisDependency(YAxis.AxisDependency.LEFT);
// set.setColor(ColorTemplate.getHoloBlue());
set.setColor(getActivity().getColor(R.color.line_color));
set.setCircleColor(Color.WHITE);
// line pointer
set.setDrawCircles(true);
set.setLineWidth(3f);
set.setCircleRadius(3f);
set.setFillAlpha(5);
//set.setFillColor(ColorTemplate.getHoloBlue());
// set.setHighLightColor(Color.rgb(244, 117, 117));
set.setValueTextColor(Color.WHITE);
set.setValueTextSize(9f);
set.setDrawValues(false);
return set;
}
private void addValueChartEntry(int valueXPosition, float valueY) {
LineData data = chemicalChart.getData();
if (data != null) {
ILineDataSet lineSet = data.getDataSetByIndex(0);
// set.addEntry(...); // can be called as well
if (lineSet == null) {
lineSet = createSet();
data.addDataSet(lineSet);
}
// data.addEntry(new Entry(set.getEntryCount(), valueY), 0);
data.addEntry(new Entry(valueXPosition, valueY), 0);
data.notifyDataChanged();
if (valueY==1.5) {
colors.add(Color.RED);
}else {
colors.add(Color.GREEN);
}
// let the chart know it's data has changed
set.setColors(colors);
chemicalChart.getData().notifyDataChanged();
chemicalChart.notifyDataSetChanged();
// limit the number of visible entries
chemicalChart.setDragEnabled(false);
chemicalChart.setTouchEnabled(false);
chemicalChart.setDragDecelerationEnabled(false);
chemicalChart.setVisibleXRangeMaximum(6);
// chart.setVisibleYRange(30, AxisDependency.LEFT);
// move to the latest entry
chemicalChart.moveViewToX(data.getEntryCount());
chemicalChart.invalidate();
// this automatically refreshes the chart (calls invalidate())
//binding.lineChart.moveViewTo(data.getEntryCount(), 55f, YAxis.AxisDependency.RIGHT);
}
}
Hello, Please help me with this I am getting the same issue.
Hi dishankEbizz, I was created to dynamic dataset for different line (example different line chart color and show gap when Y-axias value is null) Example datalist 2,3,4,null,null,1,23,5
for data position 2 to 4 create one dataset ILineDataSet lineSet = data.getDataSetByIndex(0); for data position null to null next one dataset ILineDataSet lineSet = data.getDataSetByIndex(1); for data position 1...to ...5 ILineDataSet lineSet = data.getDataSetByIndex(2); you can handle in data loop list. You can change to create dataset position when data has changed .
Hi dishankEbizz, I was created to dynamic dataset for different line (example different line chart color and show gap when Y-axias value is null) Example datalist 2,3,4,null,null,1,23,5
for data position 2 to 4 create one dataset ILineDataSet lineSet = data.getDataSetByIndex(0); for data position null to null next one dataset ILineDataSet lineSet = data.getDataSetByIndex(1); for data position 1...to ...5 ILineDataSet lineSet = data.getDataSetByIndex(2); you can handle in data loop list. You can change to create dataset position when data has changed .
Can you please suggest a solution to this bug? https://github.com/PhilJay/MPAndroidChart/issues/5429#issue-1973858671
You can refer to this real-time curve library, https://github.com/GitHubWanglei/RTLineChartView