Android MP图表设置图例和轴之间的间距

Android MP图表设置图例和轴之间的间距,android,Android,我在我的项目中使用MP图表。我正在使用多数据集条形图。我认为马英九面临以下问题: 我想在图例和x轴之间提供一些空间。现在,它与轴心相连。我查看了文档,但没有找到任何在axis和legend之间设置边距的方法。(随附屏幕截图-突出显示为第1期) 图表在开头显示了一个空组,我想删除它。(附加屏幕截图-突出显示为第2期) 下面是我的代码: tco_chart?.description?.isEnabled = false tco_chart?.setPinchZoom(false)

我在我的项目中使用MP图表。我正在使用多数据集条形图。我认为马英九面临以下问题:


  • 我想在图例和x轴之间提供一些空间。现在,它与轴心相连。我查看了文档,但没有找到任何在axis和legend之间设置边距的方法。(随附屏幕截图-突出显示为第1期)
  • 图表在开头显示了一个空组,我想删除它。(附加屏幕截图-突出显示为第2期)
  • 下面是我的代码:

    tco_chart?.description?.isEnabled = false
        tco_chart?.setPinchZoom(false)
        tco_chart?.setDrawBarShadow(false)
        val leftYAxis = tco_chart?.axisLeft
        leftYAxis?.setDrawGridLines(false)
        leftYAxis?.axisMinimum = 0f
        tco_chart?.setDrawGridBackground(false)
    
        val mv = MyMarkerView(this, R.layout.custom_marker_view)
        mv.setChartView(tco_chart) // For bounds control
        tco_chart.setMarker(mv)
        val legend = tco_chart?.legend
        legend?.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM)
        legend?.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT)
        legend?.setOrientation(Legend.LegendOrientation.HORIZONTAL)
        legend?.setYOffset(0f)
        legend?.setXOffset(10f)
        legend?.setYEntrySpace(0f)
        legend?.setTextSize(5f)
    
        val axisLabels = ArrayList<String>()
        axisLabels.add("Year 1")
        axisLabels.add("Year 2")
        axisLabels.add("Year 3")
        axisLabels.add("Year 4")
        axisLabels.add("Year 5")
    
        val xAxis = tco_chart?.xAxis
        xAxis?.granularity = 1f
        xAxis?.position = XAxis.XAxisPosition.BOTTOM
        xAxis?.setCenterAxisLabels(true)
        xAxis?.setDrawLabels(true)
        xAxis?.valueFormatter = IndexAxisValueFormatter(axisLabels)
    
        val insuranceCostEntry = ArrayList<BarEntry>()
        val insuranceCostDataModel = tcoResultModel.insurance_cost
        if (insuranceCostDataModel != null) {
            insuranceCostEntry.add(BarEntry(0f, insuranceCostDataModel.first_year.toFloat()))
            insuranceCostEntry.add(BarEntry(1f, insuranceCostDataModel.second_year.toFloat()))
            insuranceCostEntry.add(BarEntry(2f, insuranceCostDataModel.third_year.toFloat()))
            insuranceCostEntry.add(BarEntry(3f, insuranceCostDataModel.fourth_year.toFloat()))
            insuranceCostEntry.add(BarEntry(4f, insuranceCostDataModel.fifth_year.toFloat()))
        }
    
        val fuelCostEntry = ArrayList<BarEntry>()
        val fuelCostDataModel = tcoResultModel.fuel_cost
        if (fuelCostDataModel != null) {
            fuelCostEntry.add(BarEntry(0f, fuelCostDataModel.first_year.toFloat()))
            fuelCostEntry.add(BarEntry(1f, fuelCostDataModel.second_year.toFloat()))
            fuelCostEntry.add(BarEntry(2f, fuelCostDataModel.third_year.toFloat()))
            fuelCostEntry.add(BarEntry(3f, fuelCostDataModel.fourth_year.toFloat()))
            fuelCostEntry.add(BarEntry(4f, fuelCostDataModel.fifth_year.toFloat()))
        }
    
        val serviceCostEntry = ArrayList<BarEntry>()
        val serviceCostDataModel = tcoResultModel.service_cost
        if (serviceCostDataModel != null) {
            serviceCostEntry.add(BarEntry(0f, serviceCostDataModel.first_year.toFloat()))
            serviceCostEntry.add(BarEntry(1f, serviceCostDataModel.second_year.toFloat()))
            serviceCostEntry.add(BarEntry(2f, serviceCostDataModel.third_year.toFloat()))
            serviceCostEntry.add(BarEntry(3f, serviceCostDataModel.fourth_year.toFloat()))
            serviceCostEntry.add(BarEntry(4f, serviceCostDataModel.fifth_year.toFloat()))
        }
    
        val tyreChangeCostEntry = ArrayList<BarEntry>()
        val tyreChangeCostDataModel = tcoResultModel.tyre_change_cost
        if (tyreChangeCostDataModel != null) {
            tyreChangeCostEntry.add(BarEntry(0f, tyreChangeCostDataModel.first_year.toFloat()))
            tyreChangeCostEntry.add(BarEntry(1f, tyreChangeCostDataModel.second_year.toFloat()))
            tyreChangeCostEntry.add(BarEntry(2f, tyreChangeCostDataModel.third_year.toFloat()))
            tyreChangeCostEntry.add(BarEntry(3f, tyreChangeCostDataModel.fourth_year.toFloat()))
            tyreChangeCostEntry.add(BarEntry(4f, tyreChangeCostDataModel.fifth_year.toFloat()))
        }
    
        val depreciationCostEntry = ArrayList<BarEntry>()
        val depriciationCostDataModel = tcoResultModel.depreciation_cost
        if (depriciationCostDataModel != null) {
            depreciationCostEntry.add(BarEntry(0f, depriciationCostDataModel.first_year.toFloat()))
            depreciationCostEntry.add(BarEntry(1f, depriciationCostDataModel.second_year.toFloat()))
            depreciationCostEntry.add(BarEntry(2f, depriciationCostDataModel.third_year.toFloat()))
            depreciationCostEntry.add(BarEntry(3f, depriciationCostDataModel.fourth_year.toFloat()))
            depreciationCostEntry.add(BarEntry(4f, depriciationCostDataModel.fifth_year.toFloat()))
        }
    
        val year1Set: BarDataSet
        val year2Set: BarDataSet
        val year3Set: BarDataSet
        val year4Set: BarDataSet
        val year5Set: BarDataSet
    
        var data = tco_chart?.data
        if (data != null) {
            if (data.dataSetCount > 0) {
                year1Set = data.getDataSetByIndex(0) as BarDataSet
                year1Set.values = insuranceCostEntry
    
                year2Set = data.getDataSetByIndex(1) as BarDataSet
                year2Set.values = fuelCostEntry
    
                year3Set = data.getDataSetByIndex(2) as BarDataSet
                year3Set.values = tyreChangeCostEntry
    
                year4Set = data.getDataSetByIndex(3) as BarDataSet
                year4Set.values = serviceCostEntry
    
                year5Set = data.getDataSetByIndex(4) as BarDataSet
                year5Set.values = depreciationCostEntry
    
                data.notifyDataChanged()
                tco_chart?.notifyDataSetChanged()
            }
        } else {
            year1Set = BarDataSet(insuranceCostEntry, "Insurance Cost")
            year1Set.color = Color.rgb(232, 128, 44)
    
            year2Set = BarDataSet(fuelCostEntry, "Fuel Cost")
            year2Set.color = Color.rgb(232, 199, 44)
    
            year3Set = BarDataSet(tyreChangeCostEntry, "Tyre Change Cost")
            year3Set.color = Color.rgb(10, 149, 221)
    
            year4Set = BarDataSet(serviceCostEntry, "Service Cost")
            year4Set.color = Color.rgb(47, 194, 144)
    
            year5Set = BarDataSet(depreciationCostEntry, "Depriciation Cost")
            year5Set.color = Color.rgb(105, 123, 192)
    
            data = BarData(year1Set, year2Set, year3Set, year4Set, year5Set)
            data.setValueFormatter(IndexAxisValueFormatter())
            tco_chart?.data = data
        }
    
        val rightYAxis = tco_chart?.axisRight
        rightYAxis?.isEnabled = false
    
        tco_chart?.getBarData()?.setBarWidth(0.1f)
        tco_chart?.xAxis?.axisMaximum = (0 + data.getGroupWidth(0.4f, 0.02f) * 5)
        tco_chart?.groupBars(0f, 0.4f, 0.02f)
        tco_chart?.invalidate()
    
    tco\u图表?.description?.isEnabled=false
    tco_图表?.setPinchZoom(错误)
    tco_图表?设置牵引杆阴影(错误)
    val leftYAxis=tco_图表?轴左
    leftYAxis?.setDrawGridLines(假)
    leftYAxis?轴最小值=0f
    tco_图表?.setDrawGridBackground(错误)
    val mv=MyMarkerView(此,R.layout.custom_marker_视图)
    mv.setChartView(tco_图表)//用于边界控制
    总拥有成本图表设置标记(mv)
    val图例=tco_图表?图例
    图例?.setVerticalAlignment(图例.legend VerticalAlignment.BOTTOM)
    图例?.setHorizontalAlignment(图例.legend HorizontalAlignment.LEFT)
    图例?.setOrientation(图例.LegendoOrientation.水平)
    图例?设置偏移(0f)
    图例?.setXOffset(10f)
    图例?.setYEntrySpace(0f)
    图例?.SettexSize(5f)
    val axisLabels=ArrayList()
    axisLabels.add(“第1年”)
    添加(“第2年”)
    添加(“第3年”)
    添加(“第4年”)
    添加(“第5年”)
    val xAxis=tco_图表?.xAxis
    xAxis?粒度=1f
    xAxis?.position=xAxis.XAxisPosition.BOTTOM
    xAxis?.setCenterAxisLabels(真)
    xAxis?.setDrawLabels(真)
    xAxis?.valueFormatter=索引XaxisValueFormatter(axisLabels)
    val insuranceCostEntry=ArrayList()
    val insuranceCostDataModel=tcoResultModel.insurance\u成本
    如果(insuranceCostDataModel!=null){
    insuranceCostEntry.add(BarEntry(0f,insuranceCostDataModel.first\u year.toFloat())
    insuranceCostEntry.add(BarEntry(1f,insuranceCostDataModel.second\u year.toFloat())
    insuranceCostEntry.add(BarEntry(2f,insuranceCostDataModel.third_year.toFloat())
    insuranceCostEntry.add(BarEntry(3f,insuranceCostDataModel.4th_year.toFloat())
    insuranceCostEntry.add(BarEntry(4f,insuranceCostDataModel.fifth\u year.toFloat())
    }
    val fuelCostEntry=ArrayList()
    val fuelCostDataModel=tcosultmodel.fuel\u成本
    如果(fuelCostDataModel!=null){
    添加(BarEntry(0f,fuelCostDataModel.first\u year.toFloat())
    添加(BarEntry(1f,fuelCostDataModel.second_year.toFloat())
    添加(BarEntry(2f,fuelCostDataModel.third_year.toFloat())
    添加(BarEntry(3f,fuelCostDataModel.4th_year.toFloat())
    添加(BarEntry(4f,fuelCostDataModel.fifth_year.toFloat())
    }
    val serviceCostEntry=ArrayList()
    val serviceCostDataModel=tcosultmodel.service\u成本
    如果(serviceCostDataModel!=null){
    serviceCostEntry.add(BarEntry(0f,serviceCostDataModel.first\u year.toFloat())
    serviceCostEntry.add(BarEntry(1f,serviceCostDataModel.second\u year.toFloat())
    添加(BarEntry(2f,serviceCostDataModel.third_year.toFloat())
    serviceCostEntry.add(BarEntry(3f,serviceCostDataModel.4th_year.toFloat())
    添加(BarEntry(4f,serviceCostDataModel.fifth_year.toFloat())
    }
    val tyreChangeCostEntry=ArrayList()
    val tyreChangeCostDataModel=tcoResultModel.tyre\u变更成本
    如果(tyreChangeCostDataModel!=null){
    添加(BarEntry(0f,tyreChangeCostDataModel.first\u year.toFloat())
    添加(BarEntry(1f,tyreChangeCostDataModel.second_year.toFloat())
    添加(BarEntry(2f,tyreChangeCostDataModel.third_year.toFloat())
    添加(BarEntry(3f,tyreChangeCostDataModel.4th_year.toFloat())
    添加(BarEntry(4f,tyreChangeCostDataModel.fifth_year.toFloat())
    }
    val DecivalionCostEntry=ArrayList()
    val折旧成本数据模型=tcoResultModel.折旧成本
    if(dePricinationCostDataModel!=null){
    折旧成本条目.add(BarEntry(0f,depricinationcostdatamodel.first\u year.toFloat())
    折旧成本条目.add(BarEntry(1f,depricinationcostdatamodel.second\u year.toFloat())
    折旧成本条目.add(BarEntry(2f,depricinationcostdatamodel.third_year.toFloat())
    折旧成本条目.add(BarEntry(3f,depricinationcostdatamodel.4th_year.toFloat())
    折旧成本条目.add(BarEntry(4f,depricinationcostdatamodel.fifth_year.toFloat())
    }
    val year1Set:BarDataSet
    val year2Set:BarDataSet
    val YEAR3集:BarDataSet
    val year4Set:BarDataSet
    val year5Set:BarDataSet
    var数据=tco\u图表?数据
    如果(数据!=null){
    如果(data.dataSetCount>0){
    year1Set=data.getDataSetByIndex(0)作为BarDataSet
    year1Set.values=保险成本条目
    year2Set=data.getDataSetByIndex(1)作为BarDataSet
    year2Set.values=燃料成本条目
    year3Set=data.getDataSetByIndex(2)作为数据集
    year3Set.values=tyreChangeCostEntry
    year4Set=data.getDataSetByIndex(3)作为数据集
    year4Set.values=服务成本条目
    year5Set=data.getDataSetByIndex(4)作为BarDataSet
    year5Set.values=折旧成本条目
    data.notifyDataChanged()
    tco_图表?.notifyDataSetChanged()
    }
    }否则{
    year1Set=BarDataSet(保险成本条目,“保险成本”)
    year1Set.color=color.rgb(232、128、44)
    year2Set=BarDataSet(燃料成本条目,“燃料成本”)
    year2Set.color=color.rgb(232、199、44)
    第3年设置=数据集(轮胎更换成本条目,“轮胎更换成本”)
    year3Set.color=color.rgb(10149221)
    
     val legend = chart.legend
     legend.xOffset = 10f
    
    chart.setExtraOffsets(5f,5f,5f,15f)