我已经为此苦苦挣扎了一段时间,但是我找不到找到带有标签的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则不正确,并且不会被值标签的高度偏移(我也已经尝试过)。
我真正需要的是一种动态方法,将x轴的位置设置在正值和负值之间。令我惊讶的是,Android MP Charts并未提供此选项。如果是这样,请告诉我是否过于复杂。 如果无法通过Android MP图表进行设置,请告诉我是否知道在尝试达到Y栏顶部时做错了什么。
答案 0 :(得分:0)
这就是我解决问题的方式-
在renderAxisLine函数=>
MPPointD pos = mTrans.getPixelForValues(0f, 0f);
c.drawLine(mViewPortHandler.contentLeft(),
(float)pos.y, mViewPortHandler.contentRight(),
(float)pos.y, mAxisLinePaint);