0

Core-plot ライブラリを使用して、3 つの異なるビューでグラフをプロットしています。問題は、3 つすべてのグラフのうち、3 番目のグラフのみが正しく表示されることです...しかし、各グラフを個別に描画すると、常に正しく表示されます..手がかりがあれば大いに役立ちます。ありがとう

  //In ViewWillAppear  

  -(void) viewWillAppear:(BOOL)animated
 {

   dataPoints     = [[NSMutableArray alloc]init];

   // Create graph from theme
  CPTgraph1 = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:CGRectZero];
  CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
  [CPTgraph1 applyTheme:theme];

  CPTXYPlotSpace *plotSpace1;
  plotSpace1= (CPTXYPlotSpace *)CPTgraph1.defaultPlotSpace;

  CPTScatterPlot *dataSourceLinePlot1 = [(CPTScatterPlot *)[CPTScatterPlot alloc]       initWithFrame:CPTgraph1.bounds];

  CPTgraph2 = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:CGRectZero];
  //CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
  [CPTgraph2 applyTheme:theme];

  CPTXYPlotSpace *plotSpace2;
  plotSpace2= (CPTXYPlotSpace *)CPTgraph2.defaultPlotSpace;

  CPTScatterPlot *dataSourceLinePlot2 = [(CPTScatterPlot *)[CPTScatterPlot alloc] initWithFrame:CPTgraph2.bounds];

  CPTgraph3 = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:CGRectZero];
  //CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
  [CPTgraph3 applyTheme:theme];

  CPTXYPlotSpace *plotSpace3;
  plotSpace3= (CPTXYPlotSpace *)CPTgraph3.defaultPlotSpace;

  CPTScatterPlot *dataSourceLinePlot3 = [(CPTScatterPlot *)[CPTScatterPlot alloc] initWithFrame:CPTgraph3.bounds];

  [self plotGraph:graph1 withData:"SomeData" withGraph:CPTgraph1 withPlotSpace:plotSpace1 withCPTScatterPlot:dataSourceLinePlot1];

  [self plotGraph:graph2 withData:"Some Data" withGraph:CPTgraph2 withPlotSpace:plotSpace2 withCPTScatterPlot:dataSourceLinePlot2];

  [self plotGraph:graph3 withData:"Some Data" withGraph:CPTgraph3 withPlotSpace:plotSpace3 withCPTScatterPlot:dataSourceLinePlot3];

}


-(void)plotGraph :(CPTGraphHostingView *)graphView withData:(NSMutableArray*)refData    withGraph:(CPTXYGraph *) graph withPlotSpace:(CPTXYPlotSpace *) plotSpace withCPTScatterPlot:(CPTScatterPlot *)dataSourceLinePlot


{

[self readFromData:refData];


graphView.hostedGraph = graph;

graph.paddingLeft   = 0.0;
graph.paddingTop    = 0.0;
graph.paddingRight  = 0.0;
graph.paddingBottom = 0.0;

graph.plotAreaFrame.paddingLeft   = 10.0;
graph.plotAreaFrame.paddingTop    = 10.0;
graph.plotAreaFrame.paddingRight  = 10.0;
graph.plotAreaFrame.paddingBottom = 10.0;

graph.plotAreaFrame.plotArea.fill = graph.plotAreaFrame.fill;
graph.plotAreaFrame.fill          = nil;

graph.plotAreaFrame.borderLineStyle = nil;
graph.plotAreaFrame.cornerRadius    = 0.0;


plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(minimumValueForXAxis)
                                                length:CPTDecimalFromDouble( maximumValueForXAxis)];

  plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(minimumValueForYAxis)
                                                length:CPTDecimalFromDouble(ceil(  (maximumValueForYAxis - minimumValueForYAxis) / majorIntervalLengthForY ) * majorIntervalLengthForY)];



CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;

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

CPTXYAxis *x = axisSet.xAxis;
x.minorTicksPerInterval = 9;
x.majorIntervalLength   = CPTDecimalFromDouble(majorIntervalLengthForX);
x.labelOffset           = 5.0;


x.axisConstraints       = [CPTConstraints constraintWithLowerOffset:0.0];

CPTXYAxis *y = axisSet.yAxis;
y.minorTicksPerInterval = 9;
y.majorIntervalLength   = CPTDecimalFromDouble(majorIntervalLengthForY);
y.labelOffset           = 5.0;
y.majorGridLineStyle    =  majorGridLineStyle;
y.minorGridLineStyle    =  minorGridLineStyle;

y.axisConstraints       = [CPTConstraints constraintWithLowerOffset:0.0];

dataSourceLinePlot.identifier = @"Data Source Plot";

CPTMutableLineStyle *lineStyle = [dataSourceLinePlot.dataLineStyle mutableCopy];
lineStyle.lineWidth              = 1.0;
lineStyle.lineColor = [CPTColor orangeColor];
dataSourceLinePlot.dataLineStyle = lineStyle;

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


}

メソッド readFromData は x 、 y 値を計算し、それを dataPoints 配列に格納します。

もう少し詳しく説明します...グラフは最初と2番目のビューに表示されますが、範囲外のように見えます.原因の一部しか見ることができません...しかし、3番目のグラフは正しく表示されます..何か関係があると思います範囲または軸..

プロット

4

1 に答える 1

1

3 つのプロットはすべて、プロット スペースに同じプロット範囲を使用します。プロット データはその範囲に収まりますか? そうでない場合は、グラフごとに異なるプロット範囲を計算する必要があります。

于 2013-04-30T00:56:51.633 に答える