核心情节 - 反转情节和标签

时间:2012-08-08 16:08:28

标签: objective-c plot core-plot

我在显示正确的情节时遇到问题。我使用了RealTimePlot(http://code.google.com/p/core-plot/source/browse/examples/CorePlotGallery/src/plots/RealTimePlot.m)中的一些代码。我不知道为什么情节会逆转。有一张照片显示了这个问题。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self generateDataSamples];

    CPTGraphHostingView *hostingView = [[[CPTGraphHostingView alloc] initWithFrame:self.view.bounds] autorelease];
    [self.view addSubview:hostingView];

    graph = [[CPTXYGraph alloc] initWithFrame:self.view.bounds];
    hostingView.hostedGraph = graph;


    CPTTheme *theme = [CPTTheme themeNamed:kCPTSlateTheme];
    [graph applyTheme:theme];

    graph.plotAreaFrame.paddingTop = 15;
    graph.plotAreaFrame.paddingRight = 40;
    graph.plotAreaFrame.paddingBottom = 15;
    graph.plotAreaFrame.paddingLeft = 55;

    // Grid line styles
    CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle];
    majorGridLineStyle.lineWidth = 0.75;
    majorGridLineStyle.lineColor = [[CPTColor colorWithGenericGray:0.2] colorWithAlphaComponent:0.75];

    CPTMutableLineStyle *minorGridLineStyle = [CPTMutableLineStyle lineStyle];
    minorGridLineStyle.lineWidth = 0.25;
    minorGridLineStyle.lineColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.1]; 

    // Axes
    // X axis
    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
    CPTXYAxis *x = axisSet.xAxis;
    x.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
    x.orthogonalCoordinateDecimal = CPTDecimalFromUnsignedInteger(0);
    x.majorGridLineStyle = majorGridLineStyle;
    x.minorGridLineStyle = minorGridLineStyle;
    x.minorTicksPerInterval = 9;
    x.title = @"X Axis";
    x.titleOffset = 35.0;
    NSNumberFormatter *labelFormatter = [[NSNumberFormatter alloc] init];
    labelFormatter.numberStyle = NSNumberFormatterNoStyle;
    x.labelFormatter = labelFormatter;
    [labelFormatter release];

    // Y axis
    CPTXYAxis *y = axisSet.yAxis;
    y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
    y.orthogonalCoordinateDecimal = CPTDecimalFromUnsignedInteger(0);
    y.majorGridLineStyle = majorGridLineStyle;
    y.minorGridLineStyle = minorGridLineStyle;
    y.minorTicksPerInterval = 3;
    y.labelOffset = 5.0;
    y.title = @"Y Axis";
    y.titleOffset = 30.0;
    y.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];

    // Rotate the labels by 45 degrees, just to show it can be done.
    //x.labelRotation = M_PI * 0.25;

    // Create the plot
    CPTScatterPlot *dataSourceLinePlot = [[[CPTScatterPlot alloc] init] autorelease];
    dataSourceLinePlot.identifier = kPlotIdentifier;
    dataSourceLinePlot.cachePrecision = CPTPlotCachePrecisionDouble;

    CPTMutableLineStyle *lineStyle = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
    lineStyle.lineWidth = 3.0;
    lineStyle.lineColor = [CPTColor greenColor];
    dataSourceLinePlot.dataLineStyle = lineStyle;

    dataSourceLinePlot.dataSource = self;
    [graph addPlot:dataSourceLinePlot];

    // Plot space
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger(0) length:CPTDecimalFromUnsignedInteger(kMaxDataPoints - 1)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromUnsignedInteger(0) length:CPTDecimalFromUnsignedInteger(250)];
}

reversed plot

2 个答案:

答案 0 :(得分:0)

iOS CPTGraphHostingView将翻转变换应用于托管图,因此Core Plot可以在iOS和Mac之间共享绘图代码。确保托管视图及其所有超级视图都使用其默认转换。

答案 1 :(得分:0)

尝试添加

[hostingView setTransform:CGAffineTransformMakeScale(1,-1)];

在将hostingView添加到self.view之前。

我使用Xcode 5.0 for iOS7,这解决了这个问题。