【问题标题】:Fixing Axes in CorePlot - iOS在 CorePlot 中固定轴 - iOS
【发布时间】:2012-01-04 22:37:08
【问题描述】:

我正在尝试了解如何使用 CorePlot。以前,我曾经使用谷歌图表来绘制图表。

我正在尝试将图表的轴设置为左下角,并从底部开始为 x 和 y 轴设置 0。但是,我无法理解代码是如何工作的。

这里是代码 -

// Setup plot space
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.allowsUserInteraction = YES;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(2.0)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(3.0)];

// Axes
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
x.majorIntervalLength = CPTDecimalFromString(@"0.5");
x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"2");
x.minorTicksPerInterval = 2;
NSArray *exclusionRanges = [NSArray arrayWithObjects:
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.99) length:CPTDecimalFromFloat(0.02)], 
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.99) length:CPTDecimalFromFloat(0.02)],
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(2.99) length:CPTDecimalFromFloat(0.02)],
    nil];
x.labelExclusionRanges = exclusionRanges;

CPTXYAxis *y = axisSet.yAxis;
y.majorIntervalLength = CPTDecimalFromString(@"0.5");
y.minorTicksPerInterval = 5;
y.orthogonalCoordinateDecimal = CPTDecimalFromString(@"2");
exclusionRanges = [NSArray arrayWithObjects:
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.99) length:CPTDecimalFromFloat(0.02)], 
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.99) length:CPTDecimalFromFloat(0.02)],
    [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(3.99) length:CPTDecimalFromFloat(0.02)],
    nil];
y.labelExclusionRanges = exclusionRanges;

谁能告诉我应该怎么做?

【问题讨论】:

    标签: ios core-plot


    【解决方案1】:

    要在 (0, 0) 处开始图表,您需要更改 x 和 y 范围以及交点。你可以通过修改来改变它

    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(2.0)];
    

    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(2.0)];
    

    并将 yRange 的 plotRangeWithLocation 更改为 0。

    另外,你需要改变这个

    x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"2");
    

    x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
    

    对 y 的正交坐标小数做同样的事情。

    【讨论】:

      【解决方案2】:
      NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
      [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
      [numberFormatter setGeneratesDecimalNumbers:NO];
      
      axisSet = (CPTXYAxisSet *)graph.axisSet;
      
      x_axis = axisSet.xAxis;
      x_axis.majorIntervalLength = CPTDecimalFromString(@"1");
      x_axis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
      x_axis.minorTicksPerInterval = 0;
      x_axis.labelFormatter = numberFormatter;
      
       axisSet.xAxis.visibleRange =[CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(100)]; // you can set your number instead of 100
       axisSet.xAxis.gridLinesRange = axisSet.xAxis.visibleRange;
      
      y_axis = axisSet.yAxis;
      y_axis.majorIntervalLength = CPTDecimalFromString(@"1");
      y_axis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
      y_axis.minorTicksPerInterval = 1;
      y_axis.labelFormatter = numberFormatter;
      
      axisSet.yAxis.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(100)]; // you can set your number instead of 100
      axisSet.yAxis.gridLinesRange = axisSet.yAxis.visibleRange;
      

      【讨论】:

        猜你喜欢
        • 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
        相关资源
        最近更新 更多