MPAndroidChart CombinedChart CandleStick реальное тело не отображается - PullRequest
0 голосов
/ 03 ноября 2018

Я реализую комбинированную диаграмму, используя библиотеку MPAndroidChart. Тени отображаются правильно, но реальное тело отсутствует.

Это код, который я использую для CandleStick DataSet:

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 голосов
/ 04 ноября 2018

Я обнаружил причину ошибки, оказалось, что когда вы используете длинные значения, такие как отметки времени, в качестве значения 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))
}
...