android - Graphview,条形颜色每隔一个

标签 android android-studio

提前抱歉,这是我的第一篇文章。 所以我想做的是每隔一个栏设置不同的颜色。 我所看到的是,您可以使用

根据 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;
}

最佳答案

如果你想让颜色依赖于实际值,你可以这样做:

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 Colours

编辑:根据要求添加了以下代码,以用偶数 X 红色和奇数 X 蓝色绘制每个图形:

if(data.getX() % 2 ==0){
    barGraphSeries.setColor(255,0,0);
} else {
    barGraphSeries.setColor(0,0,255);
}

关于android - Graphview,条形颜色每隔一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53156648/

相关文章:

android - 如何在 flutter 中导航到新屏幕,同时仍保留底部NavigationBar

java - 将 fileChooserParams 中的 mime 类型转换为 Intent.setType 的正确格式

android - 使用 Singleton 从多个 Activity 访问数据库时无法解析符号 'context'

android - 如何使用 Android 应用程序在 Web View 中呈现 pdf 文件?

android - 如何将搜索过滤器添加到从数据库填充的 ListView 中?

安卓NFC启动服务

java - gdx-setup.jar 中没有主要 list 属性

android - 使用不同的 Assets 进行调试和发布

android - Android Studio:模拟器中的应用未显示更新的代码

java - 错误 :Cause: com. google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V