2017-02-01 3 views
4

こんにちは開発者私はdanielgindi/Chartsサードパーティライブラリを使用したプロジェクトに取り組んでいます。ここでの課題は、グラフの最も高い点の画像に表示されます。これをどのように達成できますか? また、BarChartの上の値にアクセスするにはどうすればいいですか? "E"のような最高のピーク(20.0)に何か他のものを印刷したいのですか?上記のトラックボールとアクセスラベルを達成する方法Swiftの棒グラフ上の棒グラフ3x

enter image description here enter image description here

+0

_danielgindi/Charts_の元の著者は何を言っていますか? – holex

+0

@holex私は彼と話をしました。 –

+0

私はあなたに、代わりに彼に尋ねるべきだと提案しました。 – holex

答えて

5

残念ながら、代わりにバー上記の値に文字列またはダブルの画像を設定する方法はありません。 はい、上記の値にアクセスできます。上記のリンクをご覧ください。 https://github.com/danielgindi/Charts/issues/2126

class ViewController: UIViewController { 
    var chartData = BarChartData() 
    var months: [String]! 
    var unitsSold = [Double]() 
weak var valueFormatter: IValueFormatter? 
    @IBOutlet var viewForChart: BarChartView! 
override func viewDidLoad() { 
     super.viewDidLoad() 
valueFormatter = self 

     months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
     unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0] 

setChart(dataEntryX: months, dataEntryY: unitsSold) 
} 

    func setChart(dataEntryX forX:[String],dataEntryY forY: [Double]) { 
     viewForChart.noDataText = "You need to provide data for the chart." 
     var dataEntries:[BarChartDataEntry] = [] 
     for i in 0..<forX.count{ 

      let dataEntry = BarChartDataEntry(x: Double(i), y: Double(forY[i]) , data: months as AnyObject?) 
    dataEntries.append(dataEntry) 
     } 

     let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold") 
     chartDataSet.setColor(UIColor.brown, alpha: 0.30) 
     chartData = BarChartData(dataSet: chartDataSet) 
chartData.barWidth = 0.75 
     chartData.setDrawValues(true) 
     viewForChart.data = chartData 
viewForChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: months) 

     viewForChart.drawBordersEnabled = false 

    viewForChart.data?.setValueFormatter(valueFormatter) 
} 
} 

上またはSWIFT 2倍 //のクラス

extension ViewController: IValueFormatter { 
    func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String { 
     print(value) 
     //logic to print string at required point or value 
     switch value { 

     case 20.0: return "" 
     default: return "" 
     } 
    } 
} 
+0

ライフセーバー。 :)私は複雑なデータを扱っていました。ありがとうございました – phamot

2

を超えて拡張を追加するには、クラスにこれを追加し

class ValueFormator2:NSNumberFormatter{ 
    override func stringFromNumber(number: NSNumber) -> String? { 
     print(number) 
     switch number { 
     case 3.0: return "" 

     default: return "\(number)" 
     } 
    } 

} 

、その後

func setChart(xValues: [String], yValuesLineChart: [Double], yValuesBarChart: [Double] , combinedChartView:CombinedChartView) { 
    let form = ValueFormator2() 
    combinedChartView.barData?.setValueFormatter(form) 
} 
+0

ありがとうございました –

関連する問題