Graphview, полоса цвета друг друга - PullRequest
0 голосов
/ 05 ноября 2018

заранее извините, это мой первый пост. Итак, что я хотел бы сделать, это установить разные цвета для каждой другой полосы. Я видел, что вы можете менять цвет в зависимости от значения y, используя

setValueDependentColor

Не знаю, как мне это сделать.

 BarGraphSeries<DataPoint> series;       //an Object of the PointsGraphSeries for plotting scatter graphs
    series= new BarGraphSeries<>(generateData());   //initializing/defining series to get the data from the method 'data()
    graph.addSeries(series);                   //adding the series to the GraphView
    series.setSpacing(0);

private DataPoint[] generateData() {
    mDatabaseHelper = new DatabaseHelper(this);
    Cursor data = mDatabaseHelper.getData();
    ArrayList<String> y_axis = new ArrayList<>();
    while(data.moveToNext()){
        //get the value from the database in column 1
        //then add it to the ArrayList
        y_axis.add(data.getString(1));
    }
    int n=y_axis.size();     //to find out the no. of data-

    Log.d("elements", String.valueOf(n));
    DataPoint[] values = new DataPoint[n];     //creating an object of type DataPoint[] of size 'n'
    for(int i=0;i<n;i++){
        int x=i+1;
        DataPoint v = new DataPoint(x,Double.parseDouble(y_axis.get(i)));
        values[i] = v;
        Log.d("xypoints", String.valueOf(x));

    }
    return values;
}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018
series.setValueDependentColor(new ValueDependentColor<DataPoint>() {
        @Override
        public int get(DataPoint data) {
            int x,y,z;
            if(data.getX() % 2 ==0) {
                x=255;
                y=0;
                z=0;

            }
            else {
                x=0;
                y=0;
                z=255;
            }


            return Color.rgb(x, y,z );
        }
    });

Я сделал это ват, но я не знал, что вы можете создать 2 графические серии. Здесь вы можете проверить, как: Ссылка

0 голосов
/ 05 ноября 2018

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

barGraphSeries.setValueDependentColor(new ValueDependentColor<DataPoint>() {
@Override
public int get(DataPoint data) {
return Color.rgb((int) data.getX()*255/2, (int) Math.abs(data.getY()*255/3), 100);
    }
});

метод rgb () принимает значения для каждого параметра в диапазоне 0-255. Вы можете установить определенный цвет, передавая определенные значения, или сделать что-то похожее на код выше, где в зависимости от ваших (x, y) баллов, результаты будут отличаться. Числа, выбранные здесь, являются случайными, но находятся в пределах допустимых значений RGB. В зависимости от максимальных значений X, Y, которые вы используете, вы должны изменить соответствующие делители из тех, которые я использовал (2, 3).

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

 barGraphSeries.setColor(255,0,0); //for red

вот калькулятор RGB: Цвета RGB

РЕДАКТИРОВАТЬ : добавлен следующий код в соответствии с просьбой закрасить каждый график четным X красным, а любой - нечетным X синим:

if(data.getX() % 2 ==0){
    barGraphSeries.setColor(255,0,0);
} else {
    barGraphSeries.setColor(0,0,255);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...