2016-10-17 8 views
11

मुझे पता है कि वाई मानों को छिपाना संभव है जब उनके मान MPAndroidChart पर आपके मान फ़ॉर्मेटर (MPAndroidChart: Hide 0 value labels in a stacked bar chart) के लिए कस्टम क्लास का उपयोग कर 0 के बराबर हैं।मैं आईओएस-चार्ट पर 0 मान कैसे छिपा सकता हूं?

इसके बावजूद, मैं Swift 3.0 पर एक ही कक्षा बनाने में सक्षम नहीं हूं या ऐसा करने का कोई और तरीका नहीं मिला हूं। मैंने सफलता के बिना Java से Swift 3.0 से कस्टम क्लास "अनुवाद" करने की कोशिश की (मैं जो चाहता हूं उसके कोड को कॉपी कर सकता हूं लेकिन यह त्रुटियों से भरा है)।

क्या वे 0 मानों को छिपाना संभव है जब वे ios-chart लाइब्रेरी पर 0 के बराबर हैं?

पीएस: मैं Swift 3.0 का उपयोग कर रहा हूं।

अग्रिम धन्यवाद!

उत्तर

16

मैं इसे अपने एप्लिकेशन में से एक ऐसे ही में एक piechart पर हुआ:

... 
    let dataSet = PieChartDataSet(yVals: yVals, label: nil) 

    // This is where the magic happen 
    // You set a NSNumberFormatter with an empty zero Symbol 
    let noZeroFormatter = NumberFormatter() 
    noZeroFormatter.zeroSymbol = "" 
    dataSet.valueFormatter = ChartDefaultValueFormatter(formatter: noZeroFormatter) 

    let chartData = PieChartData(xVals: xVals, dataSet: dataSet) 
    ... 
+0

टी जवाब के लिए धन्यवाद! मैं यह जोड़ना भूल गया कि मैं 'स्विफ्ट 3.0' का उपयोग कर रहा था और मुझे अपना कोड थोड़ा बदलना पड़ा ('NSNumberFormatter' से 'NumberFormatter' में बदलें) लेकिन यह मुझे' dataSet.valueFormatter = integerFormatter' पर एक त्रुटि देता है जो कहता है: 'IValueFormatter' टाइप करने के लिए 'संख्याफॉर्मेटर' प्रकार का मान असाइन नहीं किया जा सकता है ' –

+0

ठीक है, यह स्विफ्ट 3 रूपांतरण के साथ एक मुद्दा है। 'dataSet.valueFormatter = चार्टडिफॉल्ट वैल्यूफॉर्मेटर (फॉर्मेटर: पूर्णांकफॉर्मेटर) 'का उपयोग करें। मैं तुरंत जवाब अद्यतन करता हूं – Dean

+0

वाह यह एक आकर्षण की तरह काम करता है! धन्यवाद! और मैं कैसे बना सकता हूं कि शेष तत्वों में दो दशमलव होंगे? मुझे इसकी आवश्यकता है कि एक ही समय में 0 मान छुपाए गए हैं, शेष मान फ़्लोट होंगे, लेकिन शेष मान स्वचालित रूप से पूर्णांक के रूप में दिखाए जाते हैं। मुझे पता है कि मैं इसे एंड्रॉइड पर निम्नानुसार कर सकता हूं: 'दशमलव फ़ार्मेट ("###, ###, ###, ## 0.0")' लेकिन यह स्विफ्ट पर मौजूद नहीं है। मैं यह भी देख सकता हूं कि 'noZeroFormatter.generatesDecimalNumbers' मौजूद है जो मैंने अनुमान लगाया है कि यह चार्ट पर दशमलव संख्याओं को अनुमति देना है। मैंने इसे 'सत्य' पर सेट कर दिया है लेकिन ऐसा लगता है कि यह काम नहीं करता है। –

0

आप/अपने ग्राफ़ के में% जोड़ने के लिए छिपाने के साथ ही ग्राफ से 0.0 मूल्यों को दूर करना चाहते हैं:

# के लिए कोड की लाइनों के नीचे इस्तेमाल किया स्विफ्ट 3: -

func updateChartData() { 

     let chart = PieChartView(frame: mViewOutlet.frame) 
//   let chart = PieChartView(frame: CGRect(x: 122, y: 235 , width: self.mViewOutlet.frame.size.width, height: self.mViewOutlet.frame.size.height)) 


     // 2. generate chart data entries 
     let track = ["Present","Leave", "EG/LC", "Halfday", "Absent", "Weeklyoff", "Holidays"] 
     //  let money = [65, 13, 10, 2] 
     let money = mDaysArray 

     var entries = [PieChartDataEntry]() 
     for (index, value) in money.enumerated() { 
      print("index: \(index) \n value: \(value)") 
      let entry = PieChartDataEntry() 

      if value != 0 { 
       entry.y = Double(value) 
      }else{ 

      } 
      entries.append(entry) 
//   entry.label = track[index] // if we want to remove name label 
     } 

     // 3. chart setup 
     let set = PieChartDataSet(values: entries, label: "Pie Chart") 
     // this is custom extension method. Download the code for more details. 

     //4. set chart color 
     let presentColor = UIColor(red: 80.0/255.0, green: 180.0/255.0, blue: 50.0/255.0, alpha: 1.0) 
     //  let lateColor = UIColor(red: 241.0/255.0, green: 194.0/255.0, blue: 114.0/255.0, alpha: 1.0) 
     let leaveColor = UIColor(red: 203.0/255.0, green: 68.0/255.0, blue: 242.0/255.0, alpha: 1.0) 
     let egColor = UIColor(red: 95.0/255.0, green: 180.0/255.0, blue: 239.0/255.0, alpha: 1.0) 
     let halfdayColor = UIColor(red: 82.0/255.0, green: 64.0/255.0, blue: 152.0/255.0, alpha: 1.0) 
     let absentColor = UIColor(red: 242.0/255.0, green: 58.0/255.0, blue: 02.0/255.0, alpha: 1.0) 
     let weekOffColor = UIColor(red: 186.0/255.0, green: 221.0/255.0, blue: 79.0/255.0, alpha: 1.0) 
     let holidayColor = UIColor(red: 35.0/255.0, green: 215.0/255.0, blue: 179.0/255.0, alpha: 1.0) 

     let colors: [UIColor] = [presentColor,leaveColor,egColor,halfdayColor,absentColor,weekOffColor,holidayColor] 

     set.colors = colors 
     let data = PieChartData(dataSet: set) 

     let formatter = NumberFormatter() 
     formatter.numberStyle = .percent 
     formatter.maximumFractionDigits = 2 
     formatter.multiplier = 1.0 
     formatter.percentSymbol = "%" 
     formatter.zeroSymbol = "" 
     data.setValueFormatter(DefaultValueFormatter(formatter: formatter)) 

     chart.data = data 
     chart.noDataText = "No data available" 
     chart.usePercentValuesEnabled = true 
     // user interaction 
     chart.isUserInteractionEnabled = false 

     let d = Description() 
//  d.text = "iOSCharts.io" 
     chart.chartDescription = d 
//  chart.tintColor = UIColor.black 
//  chart.centerText = "Pie Chart" 

     chart.holeRadiusPercent = 0.2 
     chart.chartDescription?.enabled = false 
     chart.legend.enabled = false 

     chart.data?.notifyDataChanged() 
     chart.notifyDataSetChanged() 
     chart.setNeedsDisplay() 
     chart.animate(xAxisDuration: 1.3, yAxisDuration: 1.3) 

     chart.transparentCircleColor = UIColor.clear 
//  self.view.addSubview(chart) 
     self.mPieChartMainView.addSubview(chart) 
    } 
संबंधित मुद्दे