MPAndroidChart - X 轴仅在顶部绘制标签
MPAndroidChart - X-axis draw labels only on top
我只想在图表顶部显示 X 轴标签。我该怎么做?
我正在使用此代码:
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);
xAxis.setDrawLabels(false);
这是结果:
或者如果我这样做
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.TOP);
xAxis.setDrawAxisLine(true);
然后我只在顶部有标签,但底线不见了。
您想显示位置 BOTH_SIDED 的 xAxis 线但底部没有标签,因此您需要覆盖 XAxisRenderer:
chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTH_SIDED);
chart.setXAxisRenderer(new XAxisRenderer(chart.getViewPortHandler(), chart.getXAxis(), chart.getTransformer(YAxis.AxisDependency.LEFT)) {
@Override
public void renderAxisLabels(Canvas canvas) {
if (!mXAxis.isEnabled()|| !mXAxis.isDrawLabelsEnabled())
return;
MPPointF pointF = MPPointF.getInstance(0f, 0f);
mAxisLabelPaint.setTypeface(mXAxis.getTypeface());
mAxisLabelPaint.setTextSize(mXAxis.getTextSize());
mAxisLabelPaint.setColor(mXAxis.getTextColor());
pointF.x = 0.5f;
pointF.y = 1.0f;
drawLabels(canvas, mViewPortHandler.contentTop() - mXAxis.getYOffset(), pointF);
}
});
这对原作者没有帮助,但我遇到了同样的问题并用
chart.setExtraBottomOffset(-40f);
不错,简单,值得一试。您可能需要调整值以适合您的审美。
我只想在图表顶部显示 X 轴标签。我该怎么做?
我正在使用此代码:
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);
xAxis.setDrawLabels(false);
这是结果:
或者如果我这样做
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.TOP);
xAxis.setDrawAxisLine(true);
然后我只在顶部有标签,但底线不见了。
您想显示位置 BOTH_SIDED 的 xAxis 线但底部没有标签,因此您需要覆盖 XAxisRenderer:
chart.getXAxis().setPosition(XAxis.XAxisPosition.BOTH_SIDED);
chart.setXAxisRenderer(new XAxisRenderer(chart.getViewPortHandler(), chart.getXAxis(), chart.getTransformer(YAxis.AxisDependency.LEFT)) {
@Override
public void renderAxisLabels(Canvas canvas) {
if (!mXAxis.isEnabled()|| !mXAxis.isDrawLabelsEnabled())
return;
MPPointF pointF = MPPointF.getInstance(0f, 0f);
mAxisLabelPaint.setTypeface(mXAxis.getTypeface());
mAxisLabelPaint.setTextSize(mXAxis.getTextSize());
mAxisLabelPaint.setColor(mXAxis.getTextColor());
pointF.x = 0.5f;
pointF.y = 1.0f;
drawLabels(canvas, mViewPortHandler.contentTop() - mXAxis.getYOffset(), pointF);
}
});
这对原作者没有帮助,但我遇到了同样的问题并用 chart.setExtraBottomOffset(-40f); 不错,简单,值得一试。您可能需要调整值以适合您的审美。