我正在使用散点图在x轴上绘制线条和自定义标签。我希望一些线条准确地从y轴开始,一些形式自定义标签location.PFA图像。
控制线应该从y轴开始,应该直到" Sat"数据线应该从#34; Sun"并且应该画到周六"周四"。 任何人都可以帮助我实现这个目标
编辑1: - 正如Eric所建议的那样,对于控制线和数据线尝试了2条记录,对于Plot x,我将返回x轴的ticklocation数组,对于绘图y,我将返回图形的y值。通过这样做控制线是正确的,但数据线总是从零开始。 PFA附加图片
以下是我在编写用于在x轴上创建标签的代码
if(self.axisArray.count == 7) {
tickLocation = [1, 2, 3, 4, 5, 6, 7]
}
else {
tickLocation = [1, 2, 3, 4, 5, 6, 7, 8]
}
var xLocations = [NSNumber]()
var labelLocation: Int = -1
for number in tickLocation {
labelLocation += 1
let newLabel = CPTAxisLabel.init(text: axisArray[labelLocation] as? String, textStyle: axisLabelStyle)
newLabel.tickLocation = number as! NSNumber
newLabel.offset = x.labelOffset + x.majorTickLength
xLocations.append(NSNumber(value: number as! Double))
customLabel.append(newLabel)
}
x.labelingPolicy = CPTAxisLabelingPolicy.none
x.axisLabels = Set(customLabel)
x.majorTickLocations = Set(xLocations)
以下数据源是代码
func numberOfRecords(for plot: CPTPlot) -> UInt
{
if(plot.identifier as! String == BloodGlucoseGraphView.kUpperControlLineIdentifier) {
return UInt(2)
}
else if(plot.identifier as! String == BloodGlucoseGraphView.kLowerControlLineIdentifier) {
return UInt(2)
}
else if(plot.identifier as! String == BloodGlucoseGraphView.kFirstGraphIdentfifier) {
return UInt(self.beforeMealData.count)
}
else if(plot.identifier as! String == BloodGlucoseGraphView.kSecondGraphIdentfifier) {
return UInt(self.afterMealData.count)
}
else {
return UInt(0)
}
}
func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any?
{
let plotField = CPTScatterPlotField(rawValue: Int(field))
if(plot.identifier as! String == BloodGlucoseGraphView.kUpperControlLineIdentifier) {
if(plotField == .X) {
return Int(record)
}
else if(plotField == .Y) {
return 6
}
}
else if(plot.identifier as! String == BloodGlucoseGraphView.kLowerControlLineIdentifier) {
if(plotField == .X) {
return Int(record)
}
else if(plotField == .Y) {
return 5.2
}
}
if(plot.identifier as! String == BloodGlucoseGraphView.kFirstGraphIdentfifier) {
if(plotField == .X) {
return self.tickLocation[Int(record)] as! NSNumber
}
else if(plotField == .Y) {
return self.afterMealData[Int(record)]
}
}
else if(plot.identifier as! String == BloodGlucoseGraphView.kSecondGraphIdentfifier) {
if(plotField == .X) {
return self.tickLocation[Int(record)] as! NSNumber
}
else if(plotField == .Y) {
return self.beforeMealData[Int(record)]
}
}
return nil
}
但是,数据线也从0开始而不是形式" Sun"。 @Eric你可以帮我这方面吗
答案 0 :(得分:0)
对于数据行,请确保从数据源返回的x值与相应x轴标签的刻度位置匹配。从图片中看,它看起来像是一个一个错误。
对于控制线,这些只需要两个数据点,每个数据点对应一行。左侧点应具有绘图空间location
的{{1}}的x值,右侧点应具有xRange
的{{1}}的x值。