如何在CorePlot -Stacked条形图上显示条形图值

时间:2015-10-29 05:42:57

标签: ios bar-chart xcode7 core-plot

我已经使用ObservableCollectionProp.CollectionChanged += CollectionChangedHandler; private void CollectionChangedHandler(object sender, NotifyCollectionChangedEventArgs e) { CollectionCount = ObservableCollectionProp.Count; } 在我的应用程序中显示堆积条形图,我按照这个漂亮的教程来实现堆积条形图,现在图形如下所示。 “http://www.gilthonwe.com/2012/06/09/stacked-bar-chart-coreplot-ios/

当用户在屏幕上触摸时,我使用以下代码显示条形值。

core-plot

参见上图代码的响应

enter image description here

这里我面临几个问题

1.这些值不会显示在所选栏上方的确切位置。

  1. 考虑蓝条值= 8,绿条值= 6,红条值= 7
  2. 如果单击蓝色条显示条的确切值。 -(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index { if (plot.isHidden == YES) { return; } static CPTMutableTextStyle *style = nil; if (!style) { style = [CPTMutableTextStyle textStyle]; style.color= [CPTColor yellowColor]; style.fontSize = 16.0f; style.fontName = @"Helvetica-Bold"; } NSNumber *price = [NSNumber numberWithDouble:[self doubleForPlot:plot field:CPTBarPlotFieldBarTip recordIndex:index]]; if (!self.priceAnnotation) { NSNumber *x = [NSNumber numberWithInt:0]; NSNumber *y = [NSNumber numberWithInt:0]; NSArray *anchorPoint = [NSArray arrayWithObjects:x, y, nil]; self.priceAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:plot.plotSpace anchorPlotPoint:anchorPoint]; } static NSNumberFormatter *formatter = nil; if (!formatter) { formatter = [[NSNumberFormatter alloc] init]; [formatter setMaximumFractionDigits:2]; } // 5 - Create text layer for annotation NSString *priceValue = [formatter stringFromNumber:price]; CPTTextLayer *textLayer = [[CPTTextLayer alloc] initWithText:priceValue style:style]; self.priceAnnotation.contentLayer = textLayer; NSLog(@"barWasSelectedAtRecordIndex %lu", (unsigned long)index); NSInteger plotIndex = 0; if ([plot.identifier isEqual:[sets objectForKey:@"Due"]] == YES) { plotIndex = 0; } else if ([plot.identifier isEqual:[sets objectForKey:@"Overdue"]] == YES) { plotIndex = 1; } else if ([plot.identifier isEqual:[sets objectForKey:@"Paid"]] == YES) { plotIndex = 2; } CGFloat x =10.00; NSNumber *anchorX = [NSNumber numberWithFloat:x]; CGFloat y = 10.00; NSNumber *anchorY = [NSNumber numberWithFloat:y]; self.priceAnnotation.anchorPlotPoint = [NSArray arrayWithObjects:anchorX, anchorY, nil]; // 8 - Add the annotation [plot.graph.plotAreaFrame.plotArea addAnnotation:self.priceAnnotation]; }

    如果单击绿色栏,我将获得蓝色条值和绿色条值的累积和值。 Display Value=8

    如果我点击红色条,我会得到蓝色,绿色,红色条的累积和值。 Display Value=14

    当用户触摸屏幕中的条形图时,如何在所选条形图上显示精确位置的精确条形图值?

1 个答案:

答案 0 :(得分:1)

问题中的代码显示"提示"所选栏的值。在这种情况下,这是酒吧的顶部。如果你想要所选段的长度,减去" base"酒吧的价值。

相关问题