2013-03-20 2 views
0
I am unable to put three legend boxes on the graph.I have tried the following code 


    CPTGraph *graph1 = self.hostView.hostedGraph; 

       CGFloat legendPadding = -(self.view.bounds.size.width/8); 

       graph1.legendDisplacement = CGPointMake(legendPadding, 0.0);   
            
       CPTLegend *theLegend1 = [CPTLegend legendWithGraph:graph1]; 

       theLegend1.numberOfColumns = 1; 

       theLegend1.fill = [CPTFill fillWithColor:[CPTColor whiteColor]]; 

       theLegend1.borderLineStyle = [CPTLineStyle lineStyle]; 

       theLegend1.cornerRadius = 5.0;  


       graph1.legend = theLegend1;     

       graph1.legendAnchor = CPTRectAnchorTop; 
        

       CGFloat legendPadding1 = -(self.view.bounds.size.width/4); 


       graph1.legendDisplacement = CGPointMake(legendPadding1, 0.0); 

where am i going wrong ? 

Here is the code for adding plots: 

    CPTGraph *graph = self.hostView.hostedGraph; 
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace; 
    plotSpace.delegate = self; 
    // 2 - Create the three plots 
    aaplPlot = [[[CPTScatterPlot alloc] init]autorelease]; 
    aaplPlot.dataSource = self; 
    aaplPlot.identifier = @"MaxWeight"; 

    CPTColor *aaplColor = [CPTColor magentaColor]; 
    [graph addPlot:aaplPlot toPlotSpace:plotSpace]; 
    googPlot = [[[CPTScatterPlot alloc] init]autorelease]; 
    googPlot.dataSource = self; 
    googPlot.identifier = @"MinWeight"; 
    CPTColor *googColor = [CPTColor greenColor]; 
    [graph addPlot:googPlot toPlotSpace:plotSpace]; 

    msftPlot = [[[CPTScatterPlot alloc] init]autorelease]; 
    msftPlot.dataSource = self; 
    msftPlot.identifier = @"NormalWeight"; 

    CPTColor *msftColor = [CPTColor blueColor]; 
    [graph addPlot:msftPlot toPlotSpace:plotSpace]; 

    [plotSpace scaleToFitPlots:[NSArray arrayWithObjects:aaplPlot,msftPlot,googPlot,nil]]; 

Я добавил этот код, чтобы добавить сюжеты. Используя приведенный выше код, я могу построить только одну легендарную коробку. Но мое требование состоит в том, чтобы получить три окна с легендами. Я делаю неправильно. Пожалуйста, проверьте код и дайте мне знать, где я делаю неправильно?Как получить 3 окна легенды в графе рассеяния, используя coreplot?

ответ

0

Если вы не указали какой-либо установочный код, проблема заключается в том, что на вашем графике нет графиков в момент создания легенды. Либо создайте легенду с +legendWithGraph: после добавления графиков на график или добавьте их в легенду позже с помощью методов -addPlot: или -insertPlot:atIndex:.

+0

добавленный код для участков выше.подтвердите код. – user2191467

+0

Все в порядке. Обязательно перенесите исходный код легенды, который вы опубликовали первоначально, после добавления графиков в график. –

Смежные вопросы