首页 > 解决方案 > MPAndroidChart CombinedChart CandleStick 实体未显示

问题描述

我正在使用 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

但图表未正确呈现。这是一个屏幕截图: 图表行为截图

我已经尝试了一切,我什至没有运气删除了其他数据集。任何帮助,将不胜感激。

标签: androidchartskotlinmpandroidchart

解决方案


我发现了这个错误的原因,事实证明,当你使用像时间戳这样的大长值作为 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))
}

推荐阅读