【问题标题】:AChartEngine - Lock an Axis when zooming outAChartEngine - 缩小时锁定轴
【发布时间】:2013-10-24 03:05:00
【问题描述】:

我有一个由 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;
    }
}

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

感谢大家的帮助。

【问题讨论】:

    标签: android achartengine


    【解决方案1】:

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

    mRenderer.setZoomEnabled(true, false);
    

    对于标签大小,使用:

    mRenderer.setLabelsTextSize();
    

    对于填充,使用:

    mRenderer.setXLabelsPadding();
    

    【讨论】:

    • 成功了。谢谢。我有一个跟进,你如何删除 X 轴中的数字?我现在才注意到它,数字 (0-5) 在条形标签下。
    • mRenderer.setXLabels(0);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多