我添加了两个带有barOffset
的条形图,以便两个条形图并排显示。
我还想使用相同的数据添加两个散点图,每个散点图分别触及每个条形图的尖端。
以下是我添加两个散点图的方法。
//Add line graph 1
CPTScatterPlot *dataSourceLinePlot = [[[CPTScatterPlot alloc] init] autorelease];
dataSourceLinePlot.identifier = @"Scatter-Plot-1";
CPTMutableLineStyle *lineStyle = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
lineStyle.miterLimit = 1.0f;
lineStyle.lineWidth = 3.0f;
lineStyle.lineColor = [CPTColor orangeColor];
dataSourceLinePlot.dataLineStyle = lineStyle;
dataSourceLinePlot.dataSource = self;
[graph addPlot:dataSourceLinePlot toPlotSpace:barPlotSpace];
//Add line graph 2
CPTScatterPlot *dataSourceLinePlot2 = [[[CPTScatterPlot alloc] init] autorelease];
dataSourceLinePlot2.identifier = @"Scatter-Plot-2";
CPTMutableLineStyle *lineStyle2 = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
lineStyle2.miterLimit = 1.0f;
lineStyle2.lineWidth = 3.0f;
lineStyle2.lineColor = [CPTColor greenColor];
dataSourceLinePlot2.dataLineStyle = lineStyle2;
dataSourceLinePlot2.dataSource = self;
[graph addPlot:dataSourceLinePlot2 toPlotSpace:barPlotSpace];
但是现在当数据值相同时,两个散点图都从第一个条形图本身开始
我希望他们每个人都只触摸条形图。
我该怎么做?是否有某种事情barOffset
分散移动它?
我正确实现了代理,数据也正确显示
答案 0 :(得分:0)
如果barWidthsAreInViewCoordinates
为NO(默认值),则只需在数据源的x或y坐标中添加或减去barOffset
。
答案 1 :(得分:0)
您也可以调整plotSpace的偏移量 例如从0.4开始 - barPlotSpace.xRange = CPTPlotRange(位置:0.5,长度:NSNumber(值:结束)) 但在这种情况下,你的整个情节正在转变。
或者如上所述更好: 在数据源'号'
public func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any?
{
let idt = plot.identifier as! NSString;
switch CPTBarPlotField(rawValue: Int(field))! {
case .barLocation:
if idt.compare("Scatter-Plot-1") == .orderedSame {
// This will shift the Scatter-Plot-1 to the left
return NSNumber(value: Double(record) + 0.5)
} else {
return record as NSNumber
}
case .barTip:
//Enter your code
return nil
default:
return nil
}
}