簡體   English   中英

ios-charts / mpandroidcharts 堆疊條形標簽總計而不是每個條目的值

[英]ios-charts / mpandroidcharts stacked bar label total instead of values of each entry

我正在使用 ios-charts 並成功實現了堆疊條形圖。 但是,我只想顯示每個堆疊條頂部的堆棧總數,而不是堆疊條的每個條目的值。 現在,我所能做的就是隱藏單獨的值,並將 chartDataSet.drawValuesEnabled 設置為 false。

它是可行的嗎?

謝謝!

不知道是否有更簡單的方法,但是您可以使用MarkerView來完成此操作。 MarkerView將顯示突出顯示的條目,因此在附加之后,您將需要通過突出顯示方法之一突出顯示圖表中的所有條目:

highlightValue(int xIndex, int dataSetIndex)

突出顯示給定DataSet中給定x索引處的值。

highlightValues(Highlight[] highs)

突出顯示給定數據集中給定索引處的值。

當前它不支持此功能。 使用MarkerView或自己定制

我能夠通過將IValueFormatter分配給BarChartData來做到這一點。

這是我對IValueFormatter實現

class StackedBarChartValueFormatter:NSObject, IValueFormatter {

private let formatter = MKNumberFormatter()

func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
   
    guard let barchartDataEntry = entry as? BarChartDataEntry else {
        return formatter.string(from: NSNumber(value: value)) ?? ""
    }
    
    var nonZeroYValues : [Double] = []
    barchartDataEntry.yValues?.forEach {
        
        yValue in
        
        if yValue != 0.0 {
            nonZeroYValues.append(yValue)
        }
    }
    
    if nonZeroYValues.last == value {
        return formatter.string(from: NSNumber(value: entry.y)) ?? ""
    }
    else {
        return ""
    }
}

}

然后將此格式化程序的實例分配給BarChartData的值格式化程序,如下所示。

let data = BarChartData(dataSet: chartDataSet)
data.setValueFormatter(StackedBarChartValueFormatter())

請忽略MKNumberFormatter 它只是我創建的一個 NumberFormatter。 關鍵是將ChartDataEntryBarChartDataEntry ,然后當它是yValuesbarchartDataEntry的最后一項時返回entry.y (這是所有 Y 值的總和),否則返回一個空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM