在 MPAndroid 条形图中将 x 轴位置设置为 y = 0

Setting the x axis position to y = 0 in MPAndroid Bar Chart

我已经为此苦苦挣扎了一段时间,但我找不到让 x 轴及其标签位于 y = 0 位置的方法。当我同时拥有这两个轴时,这很重要正值和负值-我不想将轴设置为 AndroidMPChart (TOP, BOTTOM, BOTH_SIDED, TOP_INSIDE, BOTTOM_INSIDE) 给出的默认值,因为none 个适用。

我已经成功地编辑了 xAxisRenderer,并且已经能够传递我的 maxY 值与我的 minY 值的比率,希望能够手动找到设置轴的位置。然而,这个问题是我需要最高 Y 条和最低 Y 条的位置。我可以找到最低 Y 柱的位置没问题,使用 mViewPortHandler.contentBottom(),但使用 mViewPortHandler.contentTop() 出于某种原因没有给我 Y 栏的顶部。

List<Float> floatList = new ArrayList<>();
floatList.add(0f);
floatList.add(mViewPortHandler.contentTop());
floatList.add(mViewPortHandler.offsetTop()+mViewPortHandler.getScaleY());
floatList.add(mViewPortHandler.getContentCenter().y);
floatList.add(mViewPortHandler.contentBottom());
floatList.add(mViewPortHandler.getChartHeight());

if (mDebug) {         
  for (int i=0; i<floatList.size(); i++) {                    
    Paint paint = new Paint(); 
    paint.setColor(getRandomColorInColorFormPrintString("i = " + i));
    paint.setStrokeWidth(3);
    c.drawLine(mViewPortHandler.contentLeft()+15*i,
    floatList.get(i), mViewPortHandler.contentRight()+15*i,  
    floatList.get(i), paint); 
  }        
}

请注意 contentBottom(黄色)如何固定栏的底部,但 content top 和 offset top (pink/red) 在查找内容顶部时并不准确。我已经用许多不同的值尝试过这个,contentBottom 始终准确,而 contentTop/offsetTop 不是,也不会被值标签的高度偏移(我也已经尝试过了)。

我真正需要的是一种将 x 轴的位置设置在正值和负值之间的动态方法。我很惊讶 Android MP 图表没有这个选项。如果是这样,请让我知道我是否使事情过于复杂。 如果无法通过 Android MP 图表进行设置,如果您知道我在尝试获得 Y 条顶部时做错了什么,请告诉我。

我就是这样解决问题的--

在 renderAxisLine 函数中 =>

MPPointD pos = mTrans.getPixelForValues(0f, 0f);
c.drawLine(mViewPortHandler.contentLeft(),
                (float)pos.y, mViewPortHandler.contentRight(),
                (float)pos.y, mAxisLinePaint);