Заполнить определенный диапазон Y другим цветом в линейной диаграмме с помощью библиотеки диаграмм MP Android?

Я новичок в MP Android Chart и не могу понять, как заполнить определенный диапазон Y другим цветом. Выделено на скриншоте как пункт 2.

Также после прочтения документации по функциям я пытаюсь изменить цвет линии, выделенной в точке 1, и заполнить область под графиком некоторой цветовой точкой 3. Но точки 1 и 3 не работают, и я не мог понять, как можно сделать точку 2. Скриншот и код прилагаются.Снимок экрана

public class LineChartActivity extends AppCompatActivity {

    private static final String TAG = "Test";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_line_chart);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Log.i(TAG, "Line Chart Activity Created");

        LineChart chart = (LineChart) findViewById(R.id.chart);
        LineData data = new LineData(getXAxisValues(), getDataSet());
        chart.setData(data);
        setXAxis(chart);
        chart.getAxisRight().setDrawLabels(false);
        //chart.setAutoScaleMinMaxEnabled(true);
        chart.setGridBackgroundColor(128);
        chart.setBorderColor(255);
        chart.setDrawGridBackground(false);
        //chart.setBackgroundColor(0);
        chart.getLegend().setEnabled(false);
        chart.setPinchZoom(true);
        chart.setDescription("");
        chart.setTouchEnabled(true);
        chart.setDoubleTapToZoomEnabled(true);
        chart.animateXY(2000, 2000);
        chart.invalidate();
    }

    private ArrayList<ILineDataSet> getDataSet() {
        ArrayList<ILineDataSet> dataSets = null;
        ArrayList<Entry> valueSet1 = new ArrayList<>();

        Entry v1e1 = new Entry(110.000f, 0); 
        valueSet1.add(v1e1);
        Entry v1e2 = new Entry(40.000f, 4); 
        valueSet1.add(v1e2);
        Entry v1e3 = new Entry(60.000f, 5); 
        valueSet1.add(v1e3);
        Entry v1e4 = new Entry(30.000f, 6); 
        valueSet1.add(v1e4);
        Entry v1e5 = new Entry(90.000f, 7); 
        valueSet1.add(v1e5);
        Entry v1e6 = new Entry(100.000f, 8);
        valueSet1.add(v1e6);

        LineDataSet lineDataSet1 = new LineDataSet(valueSet1, "Brand 1");
        int[] colors  = new int[] {R.color.red  ,R.color.red, R.color.orange ,R.color.green, R.color.orange, R.color.red };
        lineDataSet1.setCircleColors(colors, this);
        lineDataSet1.setCircleRadius(8f);
        lineDataSet1.setLineWidth(3f);
        lineDataSet1.setValueTextSize(20f);
        lineDataSet1.enableDashedLine(6f, 18f, 0);
        dataSets = new ArrayList<>();
        dataSets.add(lineDataSet1);
        return dataSets;
    }

    private ArrayList<String> getXAxisValues() {
        ArrayList<String> xAxis = new ArrayList<>();
        xAxis.add("JAN");
        xAxis.add("FEB");
        xAxis.add("MAR");
        xAxis.add("APR");
        xAxis.add("MAY");
        xAxis.add("JUN");
        xAxis.add("JUL");
        xAxis.add("AUG");
        xAxis.add("SEPT");
        xAxis.add("OCT");
        xAxis.add("NOV");
        xAxis.add("DEC");
        return xAxis;
    }

    private void setXAxis(LineChart chart){
        XAxis xAxis = chart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setTextSize(10f);
        xAxis.setTextColor(Color.BLUE);
        //xAxis.setDrawGridLines(true);
        xAxis.setDrawAxisLine(true);
    }

}

Огромное спасибо ! Анкит


person Ankit Jain    schedule 30.01.2016    source источник


Ответы (1)


если вы пытаетесь изменить цвет линии, соединяющей точки графика, вы можете попробовать следующее:

lineDataSet1.setColor(Color.BLACK)  //or any other color you want

Для заполнения области под графиком попробуйте использовать:

lineDataSet1.setFillColor(Color.GREEN);
lineDataSet1.setFillAlpha(10); //setting alpha is optional, use if needed.

Что касается вашего пункта 2, я думаю, что использование LimitLines может быть началом, поскольку их можно рисовать параллельно любой оси. Их заполнение потребует некоторого изучения. Я обязательно обновлю ответ, если найду что-то.

Надеюсь это поможет!

person Shubhankar S    schedule 30.01.2016
comment
shubhankar-sarda Ваше предложение по изменению цвета линии сработало. Спасибо за это. Предлагаемые вами изменения для этого Для заполнения области под графиком попробуйте использовать: не работают. Любое другое предложение - person Ankit Jain; 30.01.2016
comment
shubhankar после установки для setDrawFilled значения true и lineDataSet1.setFillColor(Color.GREEN); пункт 3 начал работать - person Ankit Jain; 30.01.2016
comment
Рад узнать, что получилось! Думаю, я пропустил часть об установке drawfilled как true - person Shubhankar S; 30.01.2016
comment
Я линейный график, я задал настройку setFillColor от 0 оси x до линии набора данных. Cn мы меняем базу lineDataSet1 (это означает, что мне нужно установить для определенной части оси Y вдоль оси X) - person Prasad; 30.03.2017