我正在使用danielgindi / Charts for iOS / Swift。饼图中显示了带有标签“ DataSet”的额外图例条目,如下图所示:
当我跟踪时,发现在PieChartView图例中找到的LegendEntry数组中有两个条目,即PieChartView.legend.entries,因为我的数组中只有一个对象。
代码如下:
let dataSet = PieChartDataSet()
dataSet.drawIconsEnabled = false
dataSet.setColor(AppColors.selectedMenuItem)
dataSet.sliceSpace = 3
dataSet.iconsOffset = CGPoint(x: 0, y: 40)
dataSet.selectionShift = 5
var totalRevenuePer:Double = 0.0
_ = arrRevenue.map({ (objRevenue) -> Void in
if let percentage = Double(objRevenue.per ?? "0.0"), percentage != 0.0{
dataSet.append(PieChartDataEntry(value: percentage, label: "\((objRevenue.rev_center_name ?? "") + " " + objRevenue.revenue.currencyString())"))
totalRevenuePer += percentage
}
})
var colors = AppColors.TenderColors
if totalRevenuePer < 100{ colors.append(.clear) }
dataSet.colors = colors
let data = PieChartData(dataSet: dataSet)
data.setValueFormatter(PercentageFormatter())
data.setValueFont(NSUIFont.systemFont(ofSize: 11))
data.setValueTextColor(.white)
pieChart.data = data
pieChart.highlightValue(nil)
let legend = pieChart.legend
legend.textColor = .white
legend.entries.last?.label = ""
pieChart.animate(yAxisDuration: 1.4, easingOption: .easeInOutQuad)
// Refresh chart with new data
pieChart.notifyDataSetChanged()
感谢任何帮助,谢谢。
答案 0 :(得分:2)
这是Data values: ak = br; ax = bp;
Data values: ck = dr; cx = dp;
Data values: ek = fr; ex = fp;
Find value : bk = ?; bx = ?; bs = ?; bt = ?;
Find value : dk = ?; dx = ?; ds = ?; dt = ?;
Find value : fk = ?; fx = ?; fs = ?; ft = ?;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Getting value ---> " G_function.py "
General parameter:
gz =
00000000000000000000000000000000000000000000000000000000000000000000000000001
gx =
55066263022277343669578718895168534326250603453777594175500187360389116729240
gy =
32670510020758816978083085130507043184471273380659243275938904335757337482424
h =
115792089237316195423570985008687907852837564279074904382605163141518161494337
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1)
Getting value ---> " ar_function.py " // ;
Getting value ---> " ap_function.py " // ;
az =
00000000000000000000000000000000000000000000000000000000000000000000000000001
ak =
41909219196243142023684411716017461827271191499041408523265371287545234517784
ar =
114093384002788603827277441920363394898079450781473338114823660966953772965959
as =
55417382958229487831341226542790198068728429220304382668665948408388510207044
ax =
91339485013910955284848379483519398610217964579071158581111635868316783944084
ap =
91875350806216476544227124196685914461387931009034651691783297674388405890666
at =
51341318729914503704373530446806252817163113141784912025684999944728466073105
Formula:
ak = mod(((( 'az' ) + (( 'ax' ) * ( 'ar' ))) * minv(( 'as' ),( 'h' ))),( 'h' ))
ax = mod(((( 'az' ) + (( 'ak' ) * ( 'ap' ))) * minv(( 'at' ),( 'h' ))),( 'h' ))
as = mod(((( 'az' ) + (( 'ax' ) * ( 'ar' ))) * minv(( 'ak' ),( 'h' ))),( 'h' ))
at = mod(((( 'az' ) + (( 'ak' ) * ( 'ap' ))) * minv(( 'ax' ),( 'h' ))),( 'h' ))
( minv - inverse_mod() )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Data values: ak = br; ax = bp;
Find value : bk = ?; bx = ?; bs = ?; bt = ?;
Check value ---> " check_function.py " // ;
bz =
00000000000000000000000000000000000000000000000000000000000000000000000000001
bk =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
br =
41909219196243142023684411716017461827271191499041408523265371287545234517784
bs =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
bx =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
bp =
91339485013910955284848379483519398610217964579071158581111635868316783944084
bt =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2)
Getting value ---> " cr_function.py " // ;
Getting value ---> " cp_function.py " // ;
cz =
00000000000000000000000000000000000000000000000000000000000000000000000000001
ck =
30517446776921603025302355353044518586830452579220276958442399051475870431529
cr =
5211936807539815941050011273242617306697600906068101396203017639217703192269
cs =
20872959470122959036365649664848784511501482873627552879593611221787493529068
cx =
39362925448450791564708504697215282316259231000873709459302150228029119512048
cp =
79080378967990247513794518639317277049409401929393763239078038577192485538298
ct =
67321518807475778203468942351732869882436244186717395370511962663107971198881
Formula:
ck = mod(((( 'cz' ) + (( 'cx' ) * ( 'cr' ))) * minv(( 'cs' ),( 'h' ))),( 'h' ))
cx = mod(((( 'cz' ) + (( 'ck' ) * ( 'cp' ))) * minv(( 'ct' ),( 'h' ))),( 'h' ))
cs = mod(((( 'cz' ) + (( 'cx' ) * ( 'cr' ))) * minv(( 'ck' ),( 'h' ))),( 'h' ))
ct = mod(((( 'cz' ) + (( 'ck' ) * ( 'cp' ))) * minv(( 'cx' ),( 'h' ))),( 'h' ))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Data values: ck = dr; cx = dp;
Find value : dk = ?; dx = ?; ds = ?; dt = ?;
Check value ---> " check_function.py " // ;
dz =
00000000000000000000000000000000000000000000000000000000000000000000000000001
dk =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
dr =
30517446776921603025302355353044518586830452579220276958442399051475870431529
ds =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
dx =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
dp =
39362925448450791564708504697215282316259231000873709459302150228029119512048
dt =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3)
Getting value ---> " er_function.py " // ;
Getting value ---> " ep_function.py " // ;
ez =
00000000000000000000000000000000000000000000000000000000000000000000000000001
ek =
114149216230357464370068980281727941156061505768290176146609148789308754897052
er =
59751639193496258897871183846843685924193516676188258004992770865451105707525
es =
83143158188060620784043889313414986616092014763475233974718033901294126707766
ex =
98103071856412127544025656517676523673857657174959418615458627029744533923698
ep =
1741455399345559029971074886311329435190581673519933218826096113512479504463
et =
92884841136319954729953464075807104082485370993248012817985758311103137559304
Formula:
ek = mod(((( 'ez' ) + (( 'ex' ) * ( 'er' ))) * minv(( 'es' ),( 'h' ))),( 'h' ))
ex = mod(((( 'ez' ) + (( 'ek' ) * ( 'ep' ))) * minv(( 'et' ),( 'h' ))),( 'h' ))
es = mod(((( 'ez' ) + (( 'ex' ) * ( 'er' ))) * minv(( 'ek' ),( 'h' ))),( 'h' ))
et = mod(((( 'ez' ) + (( 'ek' ) * ( 'ep' ))) * minv(( 'ex' ),( 'h' ))),( 'h' ))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Data values: ek = fr; ex = fp;
Find value : fk = ?; fx = ?; fs = ?; ft = ?;
Check value ---> " check_function.py " // ;
fz =
00000000000000000000000000000000000000000000000000000000000000000000000000001
fk =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
fr =
114149216230357464370068980281727941156061505768290176146609148789308754897052
fs =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
fx =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
fp =
98103071856412127544025656517676523673857657174959418615458627029744533923698
ft =
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果未设置自己的默认值,则为“ DataSet”
PieChartDataSet