막대 차트에서 스크롤을 활성화하고 xAxis 레이블을 막대 그룹에 정렬하는 방법은 무엇입니까?

우주 개발

문제 : 1. x 축 값이 막대 그룹과 매핑되지 않는 이유는 무엇입니까?

  1. xAxis.axisMaximum = 50f를 설정하여 모든 막대 데이터를 표시했지만 그래프에 "0"xAxis 레이블이 많이 표시되므로 어떻게 해결할 수 있습니까? 코드 는 다음과 같습니다 .

    private fun populateCharts(chartData: List<ResponseGetPenetrationGrowth>){
            try {
    
                val prev_year = ArrayList<BarEntry>()
                val current_year = ArrayList<BarEntry>()
                val xAxis_label = ArrayList<String>()
                var i = 0f
                val currentYear = Calendar.getInstance().get(Calendar.YEAR)
    
                for (item in chartData!!) {
                    xAxis_label.add(item.brand)
                    prev_year.add(BarEntry(i,item.prevYear.toFloat()))
                    current_year.add(BarEntry(i,item.currentYear.toFloat()))
                    i++
                }
    
                val prevDataSet = BarDataSet(prev_year,(currentYear-1).toString())
                prevDataSet.setColors(ContextCompat.getColor(penetration_chart.context, R.color.prev_year_bar))
                val currentDataSet = BarDataSet(current_year, currentYear.toString())
                currentDataSet.setColors(ContextCompat.getColor(penetration_chart.context, R.color.current_year_bar))
    
                val barData = BarData(prevDataSet, currentDataSet)
                penetration_chart.data = barData
    
                val xAxis = penetration_chart.getXAxis()
    
                xAxis.setPosition(XAxis.XAxisPosition.BOTTOM)
                xAxis.valueFormatter = IAxisValueFormatter { value, axis ->
                    if (value.toInt()> 0 && (value.toInt() < xAxis_label.size)) {
                        xAxis_label.get(value.toInt())
                    } else {
                        "0"
                    }
                }
                xAxis.setCenterAxisLabels(true)
                val barSpace = 0.06f
                val groupSpace = 0.8f
                xAxis.axisMinimum = 0f
                xAxis.axisMaximum = 50f
    
    //            val yAxisLeft  = penetration_chart.axisLeft
    //            yAxisLeft.axisMinimum = 0f
    //            val yAxisRight = penetration_chart.axisRight
    //            yAxisRight.axisMinimum = 0f
                penetration_chart.setDrawGridBackground(false)
                val description = Description()
                description.text = ""
                penetration_chart.description = description
    
    
                barData.setBarWidth(0.5f)
    
                penetration_chart.groupBars(0f, groupSpace, barSpace)
    
                penetration_chart.getAxisRight().setDrawGridLines(false);
                penetration_chart.getAxisLeft().setDrawGridLines(false);
                penetration_chart.getXAxis().setDrawGridLines(false);
    
                penetration_chart.setVisibleXRangeMaximum(5f)
                penetration_chart.invalidate()
    
            }catch (e: Exception){
                e.printStackTrace()
            }
    

    }

도와주세요.

우주 개발

이것은 매력적이고 약간의 조정처럼 작동했습니다.

private fun populateCharts(chartData: List<ResponseGetPenetrationGrowth>){
        try {

            val prev_year = ArrayList<BarEntry>()
            val current_year = ArrayList<BarEntry>()
            val xAxis_label = ArrayList<String>()
            var i = 0f
            val currentYear = Calendar.getInstance().get(Calendar.YEAR)

            xAxis_label.add("")
            for (item in chartData!!) {
                xAxis_label.add(item.brand)
                prev_year.add(BarEntry(i,item.prevYear.toFloat()))
                current_year.add(BarEntry(i,item.currentYear.toFloat()))
                i++
            }
            xAxis_label.add("")

            val prevDataSet = BarDataSet(prev_year,(currentYear-1).toString())
            prevDataSet.setColors(ContextCompat.getColor(penetration_chart.context, R.color.prev_year_bar))
            prevDataSet.valueTextSize = 8f
            val currentDataSet = BarDataSet(current_year, currentYear.toString())
            currentDataSet.valueTextSize = 8f
            currentDataSet.setColors(ContextCompat.getColor(penetration_chart.context, R.color.current_year_bar))

            val barData = BarData(prevDataSet, currentDataSet)
            penetration_chart.data = barData
            barData.setBarWidth(0.3f)
            val xAxis = penetration_chart.getXAxis()

            xAxis.setPosition(XAxis.XAxisPosition.BOTTOM)
            xAxis.valueFormatter = IndexAxisValueFormatter(xAxis_label)
            xAxis.granularity= 1f
            xAxis.setCenterAxisLabels(true)


            val barSpace = 0.05f
            val groupSpace = 0.3f
            xAxis.axisMinimum = 1f
            xAxis.axisMaximum = xAxis_label.size - 1.1f


            penetration_chart.setDrawGridBackground(false)
            val description = Description()
            description.text = ""
            penetration_chart.description = description

            penetration_chart.groupBars(1f, groupSpace, barSpace)
            penetration_chart.getAxisRight().setDrawGridLines(false);
            penetration_chart.getAxisLeft().setDrawGridLines(false);
            penetration_chart.getXAxis().setDrawGridLines(false);

            val legend = penetration_chart.legend
            legend.position = Legend.LegendPosition.BELOW_CHART_CENTER
            penetration_chart.extraBottomOffset = 20f
            penetration_chart.setVisibleXRangeMaximum(5f)
            penetration_chart.invalidate()

        }catch (e: Exception){
            e.printStackTrace()
        }
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관