1

我有一个由 AChartEngine 生成的水平条形图。但是,我有一个问题。

应用程序首次启动时,Y 轴最小值从 0 开始,因此所有条形图都可见,如下图所示:

这是应用程序的开始

但是,当用户按下缩小按钮时,整个图表会缩小,并且我的条形图会浮动,如下图所示:

缩小时

如图所示,X 轴移动,原点 (0,0) 不再位于原始位置。

所以我的问题是:是否可以以这样一种方式锁定轴,当您缩小时,条形图仍与 Y 轴对齐?

这是我的代码:

public class BarGraph {

    public Intent getIntent(Context context) {

        int y[] = { 25, 10, 15, 20 };

        CategorySeries series = new CategorySeries("Bar1");
        for (int i = 0; i < y.length; i++) {
            series.add("Bar" + (i + 1), y[i]);
        }

        // collection of series under one object, there could any number of series
        XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); 
        dataSet.addSeries(series.toXYSeries()); 

        // customization of the chart

        XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for
                                                            // one series
        renderer.setColor(Color.RED);
        renderer.setDisplayChartValues(true);
        renderer.setChartValuesSpacing((float) 5.5d);
        renderer.setLineWidth((float) 10.5d);

        //collection of multiple vales for one renderer or series
        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 

        mRenderer.addSeriesRenderer(renderer);
        mRenderer.setChartTitle("Demo Graph");
        // mRenderer.setXTitle("xValues");
        mRenderer.setYTitle("Rupee");
        mRenderer.setZoomButtonsVisible(true);
        mRenderer.setShowLegend(true);
        mRenderer.setShowGridX(true); // this will show the grid in graph
        mRenderer.setShowGridY(true);
        // mRenderer.setAntialiasing(true);
        mRenderer.setBarSpacing(.5); // adding spacing between the line or
                                        // stacks
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.BLACK);
        mRenderer.setXAxisMin(0);
        mRenderer.setYAxisMin(0);
        mRenderer.setXAxisMax(5);
        mRenderer.setYAxisMax(50);
        //
        mRenderer.setXLabels(0);
        mRenderer.addXTextLabel(1, "Income");
        mRenderer.addXTextLabel(2, "Saving");
        mRenderer.addXTextLabel(3, "Expenditure");
        mRenderer.addXTextLabel(4, "NetIncome");


        mRenderer.setPanEnabled(true, false); // will fix the chart position
        mRenderer.setOrientation(Orientation.VERTICAL);

        Intent intent = ChartFactory.getBarChartIntent(context, dataSet,
                mRenderer, Type.DEFAULT);

        return intent;
    }
}

此外,您如何调整为轴标签分配的字体大小和空间?

谢谢你们的帮助。

4

1 回答 1

2

您可以通过以下方式调整缩放行为:

mRenderer.setZoomEnabled(true, false);

对于标签大小,请使用:

mRenderer.setLabelsTextSize();

对于填充,使用:

mRenderer.setXLabelsPadding();
于 2013-10-24T06:10:11.487 回答