【问题标题】:Draw multiple graphs using CorePlot Library使用 CorePlot 库绘制多个图形
【发布时间】:2012-06-04 04:44:08
【问题描述】:

我必须绘制多个图形。我必须考虑一个 Y 值到红色、蓝色图形和 Y2 轴值的绿色图形。我正在使用核心平台库......我做了类似下面的事情并获取图形如下图。但我需要为 y 和 y2 设置不同的值。 我不知道如何绘制...请帮助我...

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];

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    抱歉,您不能在一个绘图空间中添加多个 x 或 y 轴。

    所以你想做的只是在你的情节中制作动态 y 或 x 轴。

    只计算y轴的最大值是this,x轴的最大值是this。

    但对于相同的绘图空间,您必须只使用一个 y 轴和 x 轴。

    【讨论】:

      【解决方案2】:

      问题可能是您将两个绘图空间都添加到 self.graph.defaultPlotSpace。尝试在 CPTGraph 中使用 addPlotSpace 方法。并尝试为每个 CPTPlotSpaces 使用唯一的 CPTPlotSpace 标识符属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多