![](/img/trans.png)
[英]How to remove the value label above each bar in bar chart for ios-charts
[英]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。 關鍵是將ChartDataEntry
為BarChartDataEntry
,然后當它是yValues
的barchartDataEntry
的最后一項時返回entry.y
(這是所有 Y 值的總和),否則返回一個空字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.