自动突出显示数据集

时间:2020-05-28 18:38:08

标签: mpandroidchart

我有一个使用以下代码生成的条形图:

val myStackLabels = arrayOfNulls<String>(endMonth)
val values = java.util.ArrayList<BarEntry>()
for (i in activityList.indices){
    myStackLabels[i] = HelperFunctions.getMonthName(activityList.get(i).actionMonth,2)
    values.add(
        BarEntry(
            i.toFloat(), activityList.get(i).totalBehaviorPoints.toFloat()
        )
    )
}

val dataSet = BarDataSet(values, "")

val colors = java.util.ArrayList<Int>()
colors.add(Color.parseColor("#C5C4C4"))

dataSet.colors = colors
dataSet.setDrawIcons(true)
dataSet.highLightColor = Color.parseColor("#3f51b5")

val xAxis: XAxis = myChart!!.getXAxis()
xAxis.setDrawGridLines(false)
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM)
xAxis.setValueFormatter(IndexAxisValueFormatter(myStackLabels))
xAxis.setGranularity(1f)
xAxis.setGranularityEnabled(true)
xAxis.setDrawAxisLine(false)
xAxis.textColor = Color.BLACK
xAxis.labelCount = endMonth
xAxis.setDrawLabels(true)

val leftAxis: YAxis = myChart!!.getAxisLeft()
leftAxis.setDrawGridLines(true)
leftAxis.setLabelCount(endMonth, true)
leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART)
leftAxis.spaceTop = 15f
leftAxis.axisMinimum = 0f // this replaces setStartAtZero(true)
leftAxis.setDrawAxisLine(true)

val rightAxis: YAxis = myChart!!.getAxisRight()
rightAxis.setDrawGridLines(false)
rightAxis.setLabelCount(endMonth, false)
rightAxis.spaceTop = 15f
rightAxis.axisMinimum = 0f // this replaces setStartAtZero(true)
rightAxis.setDrawAxisLine(false)
rightAxis.isEnabled = false

val dataSets = java.util.ArrayList<IBarDataSet>()
dataSets.add(dataSet)

val data = BarData(dataSets)
data.setValueFormatter(StackedValueFormatter(false, " points", 0));
data.setValueTextColor(Color.BLACK);
data.setDrawValues(true)

val myHighlight = Highlight(1f, 0,0);
myChart.highlightValue(myHighlight)
myChart.animateY(1500)
myChart.setDrawValueAboveBar(true)
myChart.setScaleEnabled(false)
myChart.setPinchZoom(false)
myChart.setData(data);
myChart.setFitBars(true); // make the x-axis fit exactly all bars
myChart.invalidate(); // refresh

基本上,以上代码将生成一个非常基本的条形图。我想自动突出显示一个小节线,例如第二个小节,因此上面的代码为myHighlight = Highlight(1f, 0,0)

但是运行程序将始终返回java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.mikephil.charting.data.Entry com.github.mikephil.charting.data.ChartData.getEntryForHighlight(com.github.mikephil.charting.highlight.Highlight)' on a null object reference at com.github.mikephil.charting.charts.Chart.highlightValue(Chart.java:631),它指向行myChart.highlightValue(myHighlight)

0 个答案:

没有答案
相关问题