我正在尝试使用以下代码呈现基本条形图:
import UIKit
import CorePlot
class BarChart: CPTGraphHostingView, CPTPlotDataSource, CPTPlotDelegate, CPTPlotSpaceDelegate
{
let data: [[UInt]] = [
[30, 40, 100],
[10, 44, 35]
]
func renderData() {
let barGraph = CPTXYGraph(frame: self.bounds)
self.hostedGraph = barGraph
barGraph.axisSet = nil
var space: CPTXYPlotSpace = barGraph.defaultPlotSpace as! CPTXYPlotSpace
barGraph.addPlotSpace(space)
space.yRange = CPTPlotRange(locationDecimal: CPTDecimalFromFloat(0), lengthDecimal: CPTDecimalFromFloat(50))
space.xRange = CPTPlotRange(locationDecimal: CPTDecimalFromFloat(0), lengthDecimal: CPTDecimalFromFloat(3))
space.delegate = self
var bar = CPTBarPlot(frame: barGraph.bounds)
bar.dataSource = self
bar.barWidth = 3
barGraph.addPlot(bar, toPlotSpace: space)
}
func numberForPlot(plot: CPTPlot, field: UInt, recordIndex: UInt ) -> AnyObject? {
return data[0][Int(idx)]
}
func barFillForBarPlot(barPlot: CPTBarPlot, recordIndexRange indexRange: NSRange) -> AnyObject? {
return CPTFill(color: CPTColor(componentRed: 0, green: 0, blue: 255, alpha: 1))
}
func numberOfRecordsForPlot(plot: CPTPlot) -> UInt {
return 3
}
}
此类与故事板中的视图相关联。
不幸的是,我无法显示任何数据(但是当我用barGraph.axisSet = nil
删除行时,轴是可见的)。我错过了什么吗?谢谢!
答案 0 :(得分:0)
使用Swift时,我建议在" release-2.0"上获取Core Plot的版本。来自GitHub的分支。它有一些API更改,以便更轻松地使用Swift。最大的一个是提供使用NSDecimal
值的方法和属性的替代方法,例如绘图范围。我希望在Xcode 7最终结束后不久就完成2.0版本。
无需在图表中添加默认绘图空间;它已经存在了。
-numberForPlot:field:recordIndex:
函数应将值返回为NSNumber
。返回时输出值,例如return data[0][Int(idx)] as NSNumber
。