【问题标题】:Bar overlapping to Y-axis when Panned in the aChartEngine在 aChartEngine 中平移时与 Y 轴重叠的条形图
【发布时间】:2014-02-02 15:35:35
【问题描述】:

我正在开发在其中显示条形图的应用程序。条形图是根据接收到的动态值绘制的,条形图数据以 MB/KB 为单位。

Code Snippet :-

private void graphinit(ArrayList<Integer> graphInDataList, ArrayList<Integer> graphOutDataList)
{
    mRenderer.setXAxisMin(0);
    mRenderer.setXAxisMax(graphXMaxLimit);
    mRenderer.setYAxisMin(0);
    // mRenderer.setYAxisMax(100);

    int max = getMaximumNumber(graphInDataList, graphOutDataList);
    mRenderer.setYAxisMax(max);

    double[] limits = new double[] {0, graphXMaxLimit, 0, max};
    mRenderer.setPanLimits(limits);

    mRenderer.setBarSpacing(0.3f);

    mRenderer.setDisplayChartValues(false);
    mRenderer.setShowAxes(true);
    mRenderer.setShowLegend(false);
    mRenderer.setShowLabels(true);
    mRenderer.setPanEnabled(true, false);
    mRenderer.setClickEnabled(false);
    mRenderer.setZoomEnabled(true, false);

    mRenderer.setZoomButtonsVisible(false);
    mRenderer.setShowGrid(false);

    mRenderer.setYLabelsPadding(3);
    mRenderer.setXTitle("Analysis Duration in mins");
    mRenderer.setYTitle("Data in KB");

    // mRenderer.setXAxisMin(-0.5);
    mRenderer.setYLabelsAlign(Align.RIGHT);

    // set up the margin to the graph
    mRenderer.setMargins(new int[] { 5, 40, 0, 5});

    // mRenderer.setXAxisMin(1);
    mRenderer.setXAxisMin(-0.5);
    // mRenderer.setXAxisMax(60);

    inDataSeries = new XYSeries("InData");      
    for (int i = 0; i < graphInDataList.size(); i++) {      
        inDataSeries.add(i, graphInDataList.get(i));
    }

    outDataSeries = new XYSeries("OutData");        
    for (int i = 0; i < graphOutDataList.size(); i++) {
        outDataSeries.add(i, graphOutDataList.get(i));
    }

    mDataset.addSeries(inDataSeries);
    mDataset.addSeries(outDataSeries);

    if(graphInDataList.size()>0){                   
        right_left=(int) (graphInDataList.size()/60);
    }

    XYSeriesRenderer in_data_renderer = new XYSeriesRenderer();     
    in_data_renderer.setColor(Color.GREEN);

    XYSeriesRenderer out_data_renderer = new XYSeriesRenderer();        
    out_data_renderer.setColor(Color.RED);

    mRenderer.addSeriesRenderer(in_data_renderer);
    mRenderer.addSeriesRenderer(out_data_renderer); 

    mRenderer.setApplyBackgroundColor(true);
    mRenderer.setBackgroundColor(Color.TRANSPARENT);
    mRenderer.setMarginsColor(getResources().getColor(R.color.transparent_background));
}

EDIT :

在 onResume() 中创建

     if (mChartView == null) {

        LinearLayout layout = (LinearLayout) findViewById(R.id.linear_chart);           
        mChartView = ChartFactory.getBarChartView(this, mDataset,
                mRenderer, Type.STACKED);

        Logger.vLog("HistoryDetailScreen", "mChartView : "+mChartView);

        layout.addView(mChartView);

        @SuppressWarnings("unused")
        boolean enabled = mDataset.getSeriesCount() > 0;

    } else {
        mChartView.repaint();
    }

我在 onCreate() 中使用了 graphinit(arrlist1, arrlist2) 方法。

PROBLEM :

当我们在条形图上进行平移时,条形与 Y 轴重叠。

SCREENSHOT Default Screen :

SCREENSHOT Panned Screen :

我还为此设置了平移限制。什么是问题? 提前谢谢..

【问题讨论】:

  • 我觉得你应该使用Ist 使用Ist有什么问题?
  • @keshav:条形高度穿过轴标记..
  • 增加你的 setYAxisMax();因为值超过了最大值。
  • 他们有什么办法自动增加吗?
  • 你应该以编程方式获得最大可能值

标签: android graph bar-chart achartengine pan


【解决方案1】:

这对我有用...

mRenderer.setXAxisMin(-0.5); //for first bar overlaps y-axis

【讨论】:

    【解决方案2】:

    您正确设置了平移限制,但请注意,条形本身的宽度不为零单位。鉴于此,您必须将 X 轴最小值设置为低于最小 X 平移限制的值,例如 -0.5

    您甚至可以在运行时更改平移限制值,方法是侦听缩放事件并相应地更改限制。

    mRenderer.setPanLimits(new double[] {-0.5, graphXMaxLimit, 0, max});
    
    mChartView.addZoomListener(new ZoomListener() {
      public void zoomApplied(ZoomEvent e) {
        double currentMinX = mRenderer.getXAxisMin();
        double currentMaxX = mRenderer.getXAxisMax();
        double coef = (graphXMaxLimit + 0.5) / (currentMaxX - currentMinX);
        mRenderer.setPanLimits(new double[] {-0.5 / coef, graphXMaxLimit, 0, max});
      }
    
      public void zoomReset() {
        Log.i("Zoom", "Reset");
      }
    }, true, true);
    

    【讨论】:

    • 仍然面临同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多