AChartEngine - 缩小时锁定轴

时间:2013-10-24 03:05:01

标签: android achartengine

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

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

This is the start of the application

然而,当用户按下缩小按钮时,整个图形会缩小,我的条形浮动,如下图所示:

When zoomed out

如图所示,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;
    }
}

另外,如何调整为Axis Labels分配的字体大小和空间?

感谢帮助人员。

1 个答案:

答案 0 :(得分:2)

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

mRenderer.setZoomEnabled(true, false);

对于标签尺寸,请使用:

mRenderer.setLabelsTextSize();

对于填充,请使用:

mRenderer.setXLabelsPadding();