Question

I know using the following code to show the Legend box in AchartEngine,

renderer.setShowLegend(true);
renderer.setFitLegend(true);

But I don't know how to set the Legend Title,

People know,

Please tell me,

Thanks.

Updated : I found the answer, I can set the Legend Title via CategorySeries :

Called it

mChartView = getBarChart();
mLl.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));

From the following code :

public GraphicalView getBarChart() {
    XYMultipleSeriesRenderer barChartRenderer = getBarChartRenderer();
    setBarChartSettings(barChartRenderer);
    GraphicalView mGp = ChartFactory.getBarChartView(getActivity(),
            getBarDemoDataset(), barChartRenderer, Type.DEFAULT);
    return mGp;
}

private XYMultipleSeriesDataset getBarDemoDataset() {
    XYMultipleSeriesDataset barChartDataset = new XYMultipleSeriesDataset();

    int[] DEEP_SLEEP = new int[DashBoard.mLlDeepSleep.size()];
    for (int i = 0; i < DashBoard.mLlDeepSleep.size(); i++) {
        DEEP_SLEEP[i] = 1;
    }
    int[] LIGHT_SLEEP = new int[DashBoard.mLlLightSleep.size()];
    for (int i = 0; i < DashBoard.mLlLightSleep.size(); i++) {
        LIGHT_SLEEP[i] = 1;
    }

    CategorySeries firstSeries = new CategorySeries("4 hrs 53 mins");
    for (int i = 0; i < DEEP_SLEEP.length; i++)
        firstSeries.add(DEEP_SLEEP[i]);
    barChartDataset.addSeries(firstSeries.toXYSeries());

    CategorySeries secondSeries = new CategorySeries("2 hrs 32 mins");
    for (int j = 0; j < LIGHT_SLEEP.length; j++)
        secondSeries.add(LIGHT_SLEEP[j]);
    barChartDataset.addSeries(secondSeries.toXYSeries());

    return barChartDataset;
}

public XYMultipleSeriesRenderer getBarChartRenderer() {
    int[] colors = new int[] {
            getResources().getColor(R.color.green_deep_sleep),
            getResources().getColor(R.color.green_light_sleep) };

    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

    renderer.setAntialiasing(true);
    renderer.setAxesColor(Color.BLACK);
    renderer.setBarSpacing(0f);
    renderer.setGridColor(Color.BLACK);
    renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));
    renderer.setShowGridX(true);
    renderer.setPanEnabled(false);
    renderer.setShowAxes(false);
    renderer.setXLabels(0);
    renderer.setYLabels(5);
    renderer.setYLabelsColor(0, Color.TRANSPARENT);
    renderer.setZoomEnabled(false, false);

    SimpleSeriesRenderer r = new SimpleSeriesRenderer();
    r.setColor(colors[0]);
    renderer.addSeriesRenderer(r);

    r = new SimpleSeriesRenderer();
    r.setColor(colors[1]);
    r.setChartValuesTextAlign(Align.RIGHT);
    renderer.addSeriesRenderer(r);

    return renderer;
}

private void setBarChartSettings(XYMultipleSeriesRenderer renderer) {
    // TODO Set records in here
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(600);
    renderer.setYAxisMin(0);
    renderer.setYAxisMax(1);
}
Était-ce utile?

La solution

Legend title is by default set as the title of the series you have added in the renderer object. So set your series's title that you want to see as the legend title.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top