首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蜡烛棒MP图表android不设置蜡烛棒大小

蜡烛棒MP图表android不设置蜡烛棒大小
EN

Stack Overflow用户
提问于 2018-04-04 06:35:33
回答 1查看 1.3K关注 0票数 1

我正在创建一个CandleStick图表

来自API:https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=10使用库:https://github.com/PhilJay/MPAndroidChart

当我以值的计数作为X轴创建图表时,没有问题(ploat_point.add(new CandleEntry(i,high,low,open,close); in for循环)。

但是当我在for循环中使用ploat_point.add(new CandleEntry(time,high,low,open,close);时,使用我的自定义函数解析X轴值。即:

代码语言:javascript
复制
xAxis = candle_chart.getXAxis();
xAxis.setValueFormatter(new IAxisValueFormatter() {
                    @Override
                    public String getFormattedValue(float value, AxisBase axis) {
                        Log.e(TAG, "getFormattedValue: " + (int) value);
                        return Utilities.timeStampToMonth((int) value + "");
                    }
                });

这一次,它只在油漆样式设置为Paint.Style.FILL_AND_STROKE时才显示图形,但它不会使用candleDataSet.setBarSize()增加条形图大小。它只依赖于candleDataSet.setShadowWidth()

我的代码:

代码语言:javascript
复制
private void drawCandleStickChart(JSONArray dataArr) throws JSONException {

    mChart.setVisibility(View.GONE);

    ArrayList<CandleEntry> plot_point = new ArrayList<>();

    for (int i = 0; i < dataArr.length(); i++) {
        JSONObject point = dataArr.getJSONObject(i);
        int time = Math.round(Float.parseFloat(point.getString("time")));
        float open = Float.parseFloat(String.valueOf(point.getString("open")));
        float close = Float.parseFloat(String.valueOf(point.getString("close")));
        float high = Float.parseFloat(String.valueOf(point.getString("high")));
        float low = Float.parseFloat(String.valueOf(point.getString("low")));
        plot_point.add(new CandleEntry(time, high, low, open, close));
    }

    CandleDataSet cds = new CandleDataSet(plot_point, "Entries");
    cds.setShadowColor(Color.WHITE);


    cds.setDecreasingColor(Color.RED);
    cds.setDecreasingPaintStyle(Paint.Style.FILL_AND_STROKE);
    cds.setIncreasingColor(Color.GREEN);
    cds.setIncreasingPaintStyle(Paint.Style.FILL_AND_STROKE);
    cds.setNeutralColor(Color.BLUE);
    cds.setShowCandleBar(true);
    cds.setBarSpace(0.5f);
    cds.setShadowWidth(0.1f);

    cds.setHighlightEnabled(false);
    cds.setDrawValues(false);
    candle_chart.setMaxVisibleValueCount(20);

    CandleData cd = new CandleData(cds);

    candle_chart.setData(cd);
    candle_chart.invalidate();

    candle_chart.setVisibility(View.VISIBLE);

}

我需要X轴,因为时间和条形比阴影还要大,请帮帮我.

EN

回答 1

Stack Overflow用户

发布于 2020-02-21 06:39:05

我是通过库类CandleStickChartRenderer中不断变化的常量来实现的。它有一个带有代码块的'drawDataSet‘方法

代码语言:javascript
复制
mBodyBuffers[0] = xPos - 0.5f + barSpace;
mBodyBuffers[1] = close * phaseY;
mBodyBuffers[2] = (xPos + 0.5f - barSpace);
mBodyBuffers[3] = open * phaseY;

这个0.5常数,你必须改变为一些更大的值,如1000,因为蜡烛库有一些问题,较大的x值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49644306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档