安卓图表库MPAndroidChart中,组合图CombinedChart中的蜡烛图CandleStick实体部分没有显示出来。

3
我将使用MPAndroidChart库实现一个组合图表。阴影显示正确,但实际的主体缺失。
这是我正在使用的蜡烛图数据集代码:
val ohlcSet = CandleDataSet(if(values.price.size>1)values.hloc else mutableListOf(CandleEntry(0f,0f,0f,0f,0f)), getString(R.string.price_ohlc))
ohlcSet.axisDependency=YAxis.AxisDependency.LEFT
ohlcSet.decreasingColor = resources.getColor(R.color.colorPrimaryDark)
ohlcSet.increasingColor= resources.getColor(R.color.colorPrimaryDark)
ohlcSet.neutralColor= resources.getColor(R.color.colorPrimaryDark)
ohlcSet.shadowColor = Color.DKGRAY
ohlcSet.barSpace = 0f
ohlcSet.valueTextSize = 10f
ohlcSet.setDrawValues(false)

val cData=CombinedData()
cData.setData(LineData(priceSet,volumeSet))
cData.setData(CandleData(ohlcSet))
chart1.data = cData

但是图表没有正确地渲染。这里是一个屏幕截图:Screenshot of chart behavior 我已经尝试了一切,甚至删除了其他数据集,但仍然无济于事。任何帮助将不胜感激。
1个回答

2

我发现了这个bug的原因,原来当你使用像时间戳这样的大长值作为x值时,蜡烛图的实体会在水平方向上缩小,即使你放大也无法显示。解决这种情况的一个hack是对x值进行缩放,例如:

val ohlc=ArrayList<CandleEntry>()
ohlc.add(longTiestamp/5000000f,high, low, open, close)

然后添加自定义值格式化程序以正确显示缩放后的值:

chart1.xAxis.valueFormatter = IAxisValueFormatter { value, _ ->
    val millis = (value*5000000f).toLong()
    DateFormat.getInstance().format(Date(millis))
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接