2012-07-12 10 views
6

Próbuję ustawić dwa wykresy podobne do próbki AAPlot dostarczonej z Core Plot. To zasadniczo składa się z wykresu giełdowego, który jest wyświetlany prawie poprawnie i drugi wykres (wykres objętości), który powinien być umieszczony bezpośrednio pod wykres giełdowy. Oba wykresy powinny mieć tę samą oś x.Plotek rdzenia: Dwie działki z tą samą osią x

Niestety dane woluminu nie są drukowane w mojej aplikacji.

Mimo że intensywnie porównywałem przykładowy kod źródłowy z moim, nie znajduję źródła mojego błędu.

Czy możesz wskazać mi właściwy kierunek?

To jest mój kod:

- (void)configureChart 
{ 
    self.graph = [[CPTXYGraph alloc] initWithFrame:self.hostView.bounds]; 
    self.hostView.hostedGraph = self.graph; 
    self.graph.paddingLeft = 0.0f; 
    self.graph.paddingTop = 0.0f; 
    self.graph.paddingRight = 0.0f; 
    self.graph.paddingBottom = 0.0f; 
    self.graph.axisSet = nil; 

    // 2 - Set up text style 
    CPTMutableTextStyle *textStyle = [CPTMutableTextStyle textStyle]; 
    textStyle.color = [CPTColor grayColor]; 
    textStyle.fontName = @"Helvetica-Bold"; 
    textStyle.fontSize = 16.0f; 

    // 3 - Configure title 
    NSString *title = self.issue.company.companyName; 
    _graph.title = title;  
    _graph.titleTextStyle = textStyle; 
    _graph.titlePlotAreaFrameAnchor = CPTRectAnchorTop;  
    _graph.titleDisplacement = CGPointMake(0.0f, -12.0f);  

    // 4 - Set theme 
    [self.graph applyTheme:[CPTTheme themeNamed:kCPTStocksTheme]]; 

    _graph.plotAreaFrame.cornerRadius = 0.0f; 
    CPTMutableLineStyle *borderLineStyle = [CPTMutableLineStyle lineStyle]; 
    borderLineStyle.lineColor   = [CPTColor whiteColor]; 
    borderLineStyle.lineWidth   = 2.0f; 
    _graph.plotAreaFrame.borderLineStyle = borderLineStyle; 


    // Axes 
    CPTXYAxisSet *xyAxisSet  = (id)self.graph.axisSet; 
    CPTXYAxis *xAxis    = xyAxisSet.xAxis; 
    CPTMutableLineStyle *lineStyle = [xAxis.axisLineStyle mutableCopy]; 
    lineStyle.lineCap = kCGLineCapButt; 
    xAxis.axisLineStyle = lineStyle; 
    xAxis.labelingPolicy = CPTAxisLabelingPolicyNone; 

    CPTXYAxis *yAxis = xyAxisSet.yAxis; 
    yAxis.axisLineStyle = nil; 

    // OHLC plot 
    CPTMutableLineStyle *whiteLineStyle = [CPTMutableLineStyle lineStyle]; 
    whiteLineStyle.lineColor = [CPTColor whiteColor]; 
    whiteLineStyle.lineWidth = 1.0f; 
    CPTTradingRangePlot *ohlcPlot = [[CPTTradingRangePlot alloc] initWithFrame:self.graph.bounds]; 
    ohlcPlot.identifier = @"OHLC"; 
    ohlcPlot.lineStyle = whiteLineStyle; 
    CPTMutableTextStyle *whiteTextStyle = [CPTMutableTextStyle textStyle]; 
    whiteTextStyle.color = [CPTColor whiteColor]; 
    whiteTextStyle.fontSize = 8.0; 
    ohlcPlot.labelTextStyle = whiteTextStyle; 
    ohlcPlot.labelOffset = 5.0; 
    ohlcPlot.stickLength = 2.0f; 
    ohlcPlot.dataSource  = self; 
    ohlcPlot.plotStyle  = CPTTradingRangePlotStyleOHLC; 
    [self.graph addPlot:ohlcPlot]; 

    // Add volume plot space 
    CPTXYPlotSpace *volumePlotSpace = [[CPTXYPlotSpace alloc] init]; 
    volumePlotSpace.identifier = @"Volume"; 
    [_graph addPlotSpace:volumePlotSpace]; 

    CPTBarPlot *volumePlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor whiteColor] horizontalBars:NO]; 
    volumePlot.dataSource = self; 

    lineStyle   = [volumePlot.lineStyle mutableCopy]; 
    lineStyle.lineColor = [CPTColor whiteColor]; 
    volumePlot.lineStyle = lineStyle; 

    volumePlot.fill  = nil; 
    volumePlot.barWidth = CPTDecimalFromFloat(1.0f); 
    volumePlot.identifier = @"Volume Plot"; 
    [_graph addPlot:volumePlot toPlotSpace:volumePlotSpace]; 


    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) self.graph.defaultPlotSpace; 
    [plotSpace scaleToFitPlots:[self.graph allPlots]]; 
} 

Odpowiedz

1

Nigdy nie ustawiono zakresów powierzchni wydruku dla przestrzeni wydruku woluminu. Nadal ma domyślne zakresy x i y [0, 1].

3

Co się dzieje po prostu zrobić [_graph addPlot: volumePlot] zamiast [_graph addPlot toPlotSpace: volumePlotSpace]?

Wydaje mi się, że możesz dodać dodatkowe ograniczenia, wykorzystując wszystkie te spacje, a to oznacza, że ​​nie wyświetlają się oba wątki.

Nie jestem do końca pewien, choć szczerze mówiąc, właśnie uczyłem się Core Plot, większość rozwiązań, które wymyśliłem, jest wynikiem wielu zabaw i gier. Będę edytować ten post, jeśli pomyślę o czymś innym.

+0

Problem pozostaje taki sam podczas zmiany wiersza kodu. Zasadniczo po prostu przeskalowałem kod źródłowy z przykładu AAPlot, ale nie działa on w moim setupie. – AlexR

+0

Wiem, że istnieją pewne różnice między sposobem, w jaki wykresy są wymagane do skonfigurowania, ale nie zainicjować wykres woluminu z granicami wykresu. Czy uruchomiłeś debuggera, czy twoja strona volumePlot istnieje lub zawiera informacje? –

+0

Dane woluminu nie istnieją, źródło danych dostarcza poprawne dane. Ustawiłem wykres woluminu (w moim kodzie: wykres wyceny) w taki sam sposób, jak w próbce Core Plot. – AlexR

Powiązane problemy