私は棒グラフを作成するためにMPAndroidChartライブラリを使用しています。バーの値のカスタム位置
以下を使用して、バーの上にバーの値を表示することができます。
mChart.setDrawValueAboveBar(false);
か、我々はこれを使用することができます。
barDataSet.setDrawValues(true);
はバー自体の内部バーの値を表示します。 値のカスタム位置を設定できるかどうかを知りたい。例えば、y軸の下。ソリューション
public class TextBarChartRenderer extends BarChartRenderer {
public TextBarChartRenderer(BarDataProvider chart, ChartAnimator animator, ViewPortHandler viewPortHandler) {
super(chart, animator, viewPortHandler);
}
@Override
public void drawValues(Canvas c) {
List<IBarDataSet> dataSets = mChart.getBarData().getDataSets();
final float valueOffsetPlus = Utils.convertDpToPixel(22f)
float negOffset;
for (int i = 0; i < mChart.getBarData().getDataSetCount(); i++) {
IBarDataSet dataSet = dataSets.get(i);
applyValueTextStyle(dataSet);
float valueTextHeight = Utils.calcTextHeight(mValuePaint, "8");
negOffset = valueTextHeight + valueOffsetPlus;
BarBuffer buffer = mBarBuffers[i];
float left;
float right;
float top;
float bottom;
for (int j = 0; j < buffer.buffer.length * mAnimator.getPhaseX(); j += 4) {
left = buffer.buffer[j];
right = buffer.buffer[j + 2];
top = buffer.buffer[j + 1];
bottom = buffer.buffer[j + 3];
float x = (left + right)/2f;
if (!mViewPortHandler.isInBoundsRight(x))
break;
if (!mViewPortHandler.isInBoundsY(top) || !mViewPortHandler.isInBoundsLeft(x))
continue;
BarEntry entry = dataSet.getEntryForIndex(j/4);
float val = entry.getY();
if(val > 0) {
drawValue(c, dataSet.getValueFormatter(), val, entry, i, x,
(bottom + negOffset),
dataSet.getValueTextColor(j/4));
}
}
}
}
}
も値が表示されるようにこれを追加する必要がありましたの位置を変えるために露出APIには方法がありません
mChart.setExtraOffsets(0, 0, 0, 20);
を私はIAxisValueFormatterを試してみましたが、私はx軸上yValuesを表示できますが、彼らは、実際のxValuesラベルに隣接していました。私は値を一つ下に表示することができませんでした。次にdrawValues()メソッドをオーバーライドしようとします。ありがとう。 – amarok
@amarokそれは素晴らしいです!レンダリング関数[ここ](https://stackoverflow.com/questions/41340819/mpandroidchart-add-custom-image-inside-bars/41373250#41373250)と[ここ](https:// stackoverflow)をオーバーライドする例があります。 .com/questions/31201874/mpandroidchart-linechart-custom-highlight-drawable/41312738#41312738) –
それは働いた。私は自分のコードを掲載しました。すべてのあなたの助けをありがとう:) – amarok