2013-10-10 1 views
0

Как создать граф с линиями, которые имеют более одного цвета, используя AChartEngine. Это, как я пытался сделать это, следуя SalesBarChart из примера:Создайте многоцветные строки в графе с помощью AChartEngine

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_herd_overview); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    TextView herdoverview = (TextView) findViewById(R.id.herdoverview); 
    EditText edit_herdinfo = (EditText) findViewById(R.id.edit_herdinfo); 
    Button button = (Button) findViewById(R.id.confirmherdinfo); 
    button.setVisibility(View.GONE); 
    chartLayout = findViewById(R.id.chartHorizontalEvolution); 
    chartLayout.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      LogService.log(TAG, "It has entered on Click"); 
      Intent myIntent = null; 
      myIntent = new Intent(HerdOverview.this, HerdAnalysis.class); 
      startActivity(myIntent); 
     } 
    }); 
    createGraph(); 

} 


protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<double[]> values) { 
    LogService.log(TAG, "titles.size : " + titles.length); 
    LogService.log(TAG, "values.size : " + values.size()); 
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
    int length = titles.length; 
    for (int i = 0; i < length; i++) { 
     LogService.log(TAG, "I : " + i + " | titles: " + titles[i] + " | values: " + values.get(i)); 
     CategorySeries series = new CategorySeries(titles[i]); 
     double[] v = values.get(i); 
     int seriesLength = v.length; 
     for (int k = 0; k < seriesLength; k++) { 
      series.add(v[k]); 
      LogService.log(TAG, "K : " + k + " | values: " + v[k]); 
     } 
     dataset.addSeries(series.toXYSeries()); 
    } 
    return dataset; 
} 

protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle, String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor, int labelsColor) { 
    renderer.setChartTitle(title); 
    renderer.setXTitle(xTitle); 
    renderer.setYTitle(yTitle); 
    renderer.setXAxisMin(xMin); 
    renderer.setXAxisMax(xMax); 
    renderer.setYAxisMin(yMin); 
    renderer.setYAxisMax(yMax); 
    renderer.setAxesColor(axesColor); 
    renderer.setLabelsColor(labelsColor); 
} 

protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) { 
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
    renderer.setAxisTitleTextSize(16); 
    renderer.setChartTitleTextSize(20); 
    renderer.setLabelsTextSize(15); 
    renderer.setLegendTextSize(15); 
    int length = colors.length; 
    for (int i = 0; i < length; i++) { 
     SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
     r.setColor(colors[i]); 
     renderer.addSeriesRenderer(r); 
    } 
    return renderer; 
} 

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

ответ

1

Я изменил при создании ChartFactort.getCarChartView, тип к Stacked От:

mChartViewCellLevel = ChartFactory.getBarChartView(this, buildBarDataset(titles, values), renderer, BarChart.Type.DEFAULT); 

To:

mChartViewCellLevel = ChartFactory.getBarChartView(this, buildBarDataset(titles, values), renderer, BarChart.Type.STACKED); 
Смежные вопросы