MPAndroidChart CombinedChart CandleStick真实身体未显示

时间:2018-11-03 03:40:16

标签: android charts kotlin mpandroidchart

我正在使用MPAndroidChart库实现组合图表。阴影显示正确,但真实的身体丢失了。

这是我用于CandleStick数据集的代码:

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 个答案:

答案 0 :(得分:0)

我发现了该错误的原因,原来,当您将时间戳等较长的值用作x值时,烛台的真实主体会水平缩小,即使缩放也不会显示。解决此问题的黑客正在缩放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))
}