Android 单系列条形图,根据条形图中的给定数据显示多种颜色

Android 单系列条形图,根据条形图中的给定数据显示多种颜色,android,achartengine,Android,Achartengine,我正在使用achartengine库开发一个条形图,它有两个单独的系列。其中一个系列应始终显示相同的颜色,另一个系列根据给定的值显示不同的颜色 例如: x300橙色 代码如下:` public class ChartActivity extends Activity { private String[] mMonth = new String[] { "Jan", "Feb" , "Mar", "Apr", "May", "Jun",

我正在使用achartengine库开发一个条形图,它有两个单独的系列。其中一个系列应始终显示相同的颜色,另一个系列根据给定的值显示不同的颜色

例如:

x<300蓝色>300橙色

代码如下:`

public class ChartActivity extends Activity {
private String[] mMonth = new String[] {
                "Jan", "Feb" , "Mar", "Apr", "May", "Jun",
                "Jul", "Aug" , "Sep", "Oct", "Nov", "Dec"
            };

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_chart);

            Button btnChart = (Button) findViewById(R.id.btn_chart);

            // Defining click event listener for the button btn_chart
            OnClickListener clickListener = new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // Draw the Income vs Expense Chart
                    openChart();
                }


            };
            btnChart.setOnClickListener(clickListener);

        }

        private void openChart(){
            int[] x = { 0,1,2,3,4,5,6,7 };
            int[] income = { 25,50,75,100,125,150,175};
            int[] expense = {50, 75, 100, 125, 150, 175, 200, 225 };



            // Creating an  XYSeries for Income
            XYSeries incomeSeries = new XYSeries("Income");
            // Creating an  XYSeries for Expense
            XYSeries expenseSeries = new XYSeries("Expense");
            // Adding data to Income and Expense Series


            for(int i=0;i<x.length;i++){
                incomeSeries.add(i,income[i]);

                expenseSeries.add(i,expense[i]);
            }

            // Creating a dataset to hold each series
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
            // Adding Income Series to the dataset
            dataset.addSeries(incomeSeries);

            // Adding Expense Series to dataset
            dataset.addSeries(expenseSeries);


            // Creating XYSeriesRenderer to customize incomeSeries
            XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
        incomeRenderer.setColor(Color.BLUE);


            incomeRenderer.setFillPoints(true);
            incomeRenderer.setLineWidth(2);
            incomeRenderer.setDisplayChartValues(true);

            // Creating XYSeriesRenderer to customize expenseSeries
            XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();
            expenseRenderer.setColor(Color.RED);
            expenseRenderer.setFillPoints(true);
            expenseRenderer.setLineWidth(2);
            expenseRenderer.setDisplayChartValues(true);

            // Creating a XYMultipleSeriesRenderer to customize the whole chart
            XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
            multiRenderer.setXLabels(0);
            multiRenderer.setAxesColor(Color.BLACK);
            multiRenderer.setXLabelsAlign(Align.RIGHT);
            multiRenderer.setChartTitle("Income vs Expense Chart");
            multiRenderer.setXTitle("Year 2012");
            multiRenderer.setYTitle("Amount in Dollars");
            multiRenderer.setBarSpacing(0.5);
            multiRenderer.setMarginsColor(Color.WHITE);
            multiRenderer.setApplyBackgroundColor(true);
            multiRenderer.setBackgroundColor(Color.WHITE);
            multiRenderer.setMargins(new int[] {20, 30, 15, 0});
            multiRenderer.setZoomButtonsVisible(true);
            for(int i=0; i< x.length;i++){
                multiRenderer.addXTextLabel(i, mMonth[i]);
            }

            // Adding incomeRenderer and expenseRenderer to multipleRenderer
            // Note: The order of adding dataseries to dataset and renderers to multipleRenderer
            // should be same
            multiRenderer.addSeriesRenderer(incomeRenderer);
            multiRenderer.addSeriesRenderer(expenseRenderer);

            // Creating an intent to plot bar chart using dataset and multipleRenderer
            Intent intent = ChartFactory.getBarChartIntent(getBaseContext(), dataset, multiRenderer, Type.DEFAULT);

            // Start Activity
            startActivity(intent);

        }`
公共类ChartActivity扩展活动{
私有字符串[]mMonth=新字符串[]{
“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_图表);
按钮btnChart=(按钮)findViewById(R.id.btn\U图表);
//为按钮btn\U图表定义单击事件侦听器
OnClickListener clickListener=新建OnClickListener(){
@凌驾
公共void onClick(视图v){
//绘制收入与支出的图表
openChart();
}
};
btnChart.setOnClickListener(单击Listener);
}
私有void openChart(){
int[]x={0,1,2,3,4,5,6,7};
int[]收入={25,50,75100125150175};
int[]费用={50,75,100,125,150,175,200,225};
//创建收入系列
XYSeries incomeSeries=新XYSeries(“收入”);
//为费用创建XYSeries
XYSeries expenseSeries=新的XYSeries(“费用”);
//向收入和支出系列添加数据

对于(int i=0;i单个系列(或相同系列的元素)的不同颜色,Achartengine库尚未实现或提供…:

但也有使用多系列或堆叠条形图的方法

检查螺纹。和

更新: stacke条形图的构造

假设您要使用不同颜色的输入数据

   int[] expense = {50, 75, 100, 125, 150, 175, 200, 225 };
将不同系列声明为数组列表

  static ArrayList<Integer> series1 = new ArrayList<Integer>();
  static ArrayList<Integer> series2 = new ArrayList<Integer>();
  static ArrayList<Integer> series3 = new ArrayList<Integer>();
static ArrayList series1=new ArrayList();
静态ArrayList系列2=新ArrayList();
静态ArrayList系列3=新ArrayList();
现在检查输入数据并将其添加到相应的序列中

for(int i=0;i<expense.lenght;i++)
 { 
  if(expense[i]> 50 & expense[i]<100)
   { series1.add(expense[i]);
     series2.add(0);
    series3.add(0);}

if(expense[i]> 100 & expense[i]<150)
 {.......}
}

for(int i=0;i 50和费用[i]100和费用[i]嗨,Kiran,我以前看过这些链接,你能给我推荐更多的链接吗…?我想根据我上面解释的值实现不同颜色的单系列条形图…tat是不可能的…即使我有tat问题,所以我使用了堆叠条形图,你可以尝试使用堆叠,你能实现单系列和多系列吗五颜六色??