【问题标题】:MPAndroidChart - X-axis draw labels only on topMPAndroidChart - X 轴仅在顶部绘制标签
【发布时间】:2018-10-17 08:58:52
【问题描述】:

我只想在图表顶部显示 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);

然后我只在顶部有标签,但底线不见了。

【问题讨论】:

  • “底线缺失”是什么意思?你说的是底部边框吗?你想在有底部边框的同时显示顶部标签,对吗?
  • 是的,缺少底部边框。是的,我想显示带有两个边框(底部和顶部)的顶部标签。

标签: android charts mpandroidchart linechart


【解决方案1】:

您想要显示位置 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);
        }
    });

【讨论】:

  • 我试过了,但它在整个图表周围画了一个黑色边框。左侧 Y 轴必须不可见(如屏幕截图所示)。
  • 是的,这是有效的。看起来不错,但如果没有单行答案,我会等待一段时间:) 如果没有,我会接受这个答案。
  • 是的,只有一个班轮。为这个渲染器创建一个单独的类,然后在一行中设置它;)我查看了库的源代码,没有其他方法可以做到。
【解决方案2】:

这对原作者没有帮助,但我遇到了同样的问题并修复了它 chart.setExtraBottomOffset(-40f); 不错,简单,值得一试。您可能需要调整值以适合您的审美。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多