2012-06-04 116 views
1

我必須繪製多個圖形。我必須考慮一個Y值爲紅色,藍色圖形和Y2軸的綠色圖形值。我正在使用核心平臺庫......我完成了像下面的東西,並得到圖像如下圖像。但我需要爲y和y2設置不同的值。 enter image description here我沒有得到如何繪製...請幫我...使用CorePlot庫繪製多個圖形

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace; 
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(self.xRangeMinVal) length:CPTDecimalFromInt(self.xRangeMaxVal)]; 
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(self.yRangeMinVal) length:CPTDecimalFromInt(self.yRangeMaxVal)]; 
    //plotSpace.allowsUserInteraction = YES; 
    //plotSpace.delegate = self; 

    // Grid line styles 
    CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle]; 
    majorGridLineStyle.lineWidth = 0.75; 
    majorGridLineStyle.dashPattern = [NSArray arrayWithObjects:[NSNumber numberWithFloat:2.0f], nil]; 
    majorGridLineStyle.lineColor = [[CPTColor colorWithGenericGray:0.4] colorWithAlphaComponent:0.4]; 
    CPTMutableLineStyle *minorGridLineStyle = [CPTMutableLineStyle lineStyle]; 
    minorGridLineStyle.lineWidth = 0.25; 
    minorGridLineStyle.lineColor = [[CPTColor colorWithGenericGray:0.4] colorWithAlphaComponent:0.1];  

    CPTMutableTextStyle *textStyle = [CPTTextStyle textStyle]; 
    textStyle.color     = [CPTColor blackColor]; 
    textStyle.fontSize    = 16.0f; 
    textStyle.textAlignment   = CPTTextAlignmentCenter; 


    CPTMutableLineStyle *axisLineStyle = [CPTMutableLineStyle lineStyle]; 
    axisLineStyle.lineWidth = 3.0; 
    axisLineStyle.lineCap = kCGLineCapRound; 
    // Axes 
    // Label x axis with a fixed interval policy 
    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet; 
    CPTXYAxis *x = axisSet.xAxis; 
    x.majorIntervalLength = CPTDecimalFromString(@"2.0"); 
    x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0.0"); 
    x.minorTicksPerInterval = 1; 
    x.majorGridLineStyle = majorGridLineStyle; 
    x.minorGridLineStyle = minorGridLineStyle; 
    //x.preferredNumberOfMajorTicks=; 

    x.labelingPolicy = CPTAxisLabelingPolicyAutomatic; 
    //x.title = [NSString stringWithFormat:@"goat"]; 
    //x.titleOffset = 10.0; 
    //x.titleLocation = CPTDecimalFromString(@"0.0"); 
    x.title = self.xLineTitle; 
    x.axisLineStyle   = axisLineStyle; 
    x.titleTextStyle = textStyle; 

    CPTMutableLineStyle *dottedStyle=[CPTMutableLineStyle lineStyle]; 


    x.minorGridLineStyle=dottedStyle; 

    // Label y with an automatic label policy. 
    CPTXYAxis *y = axisSet.yAxis; 
    y.labelingPolicy = CPTAxisLabelingPolicyAutomatic; 
    // y.orthogonalCoordinateDecimal = CPTDecimalFromString(@"-10.0"); 
    y.minorTicksPerInterval = 2; 
    y.preferredNumberOfMajorTicks = 8; 
    y.majorGridLineStyle = majorGridLineStyle; 
    y.minorGridLineStyle = minorGridLineStyle; 
    //y.labelOffset = 1.0; 
    y.title = self.yLineTitle; 
    y.titleTextStyle = textStyle; 
    y.axisLineStyle   = axisLineStyle; 
    y.titleRotation = M_PI * 0.5; 
    y.minorGridLineStyle=dottedStyle; 


    CPTXYPlotSpace *plotSpace1 = (CPTXYPlotSpace *)self.graph.defaultPlotSpace; 
    // CPTXYPlotSpace *plotSpace1 = [[[CPTXYPlotSpace alloc] init] autorelease]; 
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(self.xRangeMinVal) length:CPTDecimalFromInt(self.xRangeMaxVal)]; 
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(60)]; 
    CPTXYAxis *y2 = [[[CPTXYAxis alloc] init] autorelease]; 
    y2.coordinate     = CPTCoordinateY; 
    y2.plotSpace     = plotSpace1; 
    y2.majorGridLineStyle   = majorGridLineStyle; 
    y2.minorGridLineStyle   = minorGridLineStyle; 
    y2.orthogonalCoordinateDecimal = CPTDecimalFromDouble(self.xRangeMaxVal); 
    y2.labelingPolicy    = CPTAxisLabelingPolicyAutomatic; 
    //y2.separateLayers   = NO; 
    y2.preferredNumberOfMajorTicks = 7; 
    y2.minorTicksPerInterval  = 2;// 
    y2.tickDirection    = CPTSignPositive; 
    y2.axisLineStyle    = axisLineStyle; 
    //y2.majorTickLength    = 6.0; 
    y2.majorTickLineStyle   = axisLineStyle; 
    //y2.minorTickLength    = 4.0; 
    y2.title      = @"Y2 Axis"; 
    //y2.titleTextStyle   = axisTitleTextStyle; 
    y2.titleOffset     = 40.0; 

    //graph.axisSet.axes = [NSArray arrayWithObjects:x, y, y2, nil]; 
    self.graph.axisSet.axes = [NSArray arrayWithObjects:x, y,y2,nil]; 

回答

1

抱歉,您不能在一個情節空間添加多個X或Y軸。

所以無論你想做什麼,只是在你的情節做動態y或x軸。

只要計算出y軸的最大值是x軸就是這個。

但是您必須只使用一個y軸和x軸作爲相同的繪圖空間。

0

問題可能是您正在將兩個情節空格self.graph.defaultPlotSpace。嘗試在CPTGraph中使用addPlotSpace方法。還可以嘗試爲每個CPTPlotSpaces使用唯一的CPTPlotSpace標識符屬性。