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

时间:2019-04-13 01:05:02

标签: android mpandroidchart

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

我已经设法编辑了xAxisRenderer,并且能够传递maxY值与minY值的比率,希望手动找到设置轴的位置。但是,这样做的问题是我需要最高Y条和最低Y条的位置。我可以使用mViewPortHandler.contentBottom()找到最低Y栏的位置,但是使用 出于某种原因,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(粉红色/红色)在查找内容顶部时不准确。我尝试了许多不同的值,contentBottom始终准确,而contentTop / offsetTop则不正确,并且不会被值标签的高度偏移(我也已经尝试过)。 enter image description here

我真正需要的是一种动态方法,将x轴的位置设置在正值和负值之间。令我惊讶的是,Android MP Charts并未提供此选项。如果是这样,请告诉我是否过于复杂。 如果无法通过Android MP图表进行设置,请告诉我是否知道在尝试达到Y栏顶部时做错了什么。

1 个答案:

答案 0 :(得分:0)

这就是我解决问题的方式-

在renderAxisLine函数=>

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