1

achartengine libを使用して棒グラフを開発しています.2つの単一シリーズがあります.1つのシリーズは常に同じ色を表示し、他のシリーズは指定された値に従って異なる色を表示する必要があります.

例えば:

<200 グリーン色,200> 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);

        }`

そのために、以下に記述されたコードを開発しました。

4

1 に答える 1

0

単一のシリーズ (または同じシリーズの要素) の異なる色は、Achartengine ライブラリによってまだ実装または提供されていません... :

ただし、複数の系列や積み上げ棒グラフを使用する方法があります

achartengineスレッドを使用して棒グラフを確認します。複数のシリーズを使用した異なるカラーバー 。

更新: スタック棒グラフの場合

別の色を使用したい入力データがあるとします。

   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>();

入力からのデータをチェックして、適切なシリーズに追加します

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)
 {.......}
}
于 2013-05-01T15:31:56.863 に答える