2015-10-26 2 views
2

Я создал простую реализацию структуры CorePlot. Диаграмма отображается хорошо, но линия не построена. Я попробовал выписать мои значения выборки и действительно иметь данные. Любые и все данные о том, почему строка заложенных данных не отображается, были бы оценены!Строка линии ядра не отображается

Заголовочный файл:

#import <UIKit/UIKit.h> 
#import "PresentedViewControllerDelegate.h" 
#import "CorePlot-CocoaTouch.h" 

#define NUM_SAMPLES 30 

@interface DeviceDetailModal : UIViewController <PresentedViewControllerDelegate, UIWebViewDelegate, UITableViewDataSource, UITableViewDelegate, CPTPlotDataSource>{ 
CPTXYGraph *graph; 
NSMutableArray *samples; 

double xxx[NUM_SAMPLES]; 
double yyy1[NUM_SAMPLES]; 

} 

@property (weak, nonatomic) IBOutlet UITableView *tableView; 

@property (nonatomic, weak) id <PresentedViewControllerDelegate> delegate; 


@end 

Главная Файл заливка фона

#import <Foundation/Foundation.h> 
#import "DeviceDetailModal.h" 
#import "DetailCell.h" 
#import "CorePlot-CocoaTouch.h" 

#define START_POINT 0 // Start at origin 
#define END_POINT 15.0 // TODO time is 15 seconds 

#define X_VAL @"X_VAL" 
#define Y_VAL @"Y_VAL" 

@implementation DeviceDetailModal 


-(void)viewDidLoad{ 
UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStylePlain target:self action:@selector(closeView)]; 
self.navigationItem.leftBarButtonItem = closeButton; 

[[UIBarButtonItem appearance] setTintColor:[UIColor lightGrayColor]]; 

[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]]; 


self.tableView.layer.cornerRadius = 10.0; 
self.tableView.layer.borderWidth = 0.7; 
self.tableView.layer.borderColor = [UIColor whiteColor].CGColor; 

[self generateDataSamples]; 

NSNumber *xAxisStart = [NSNumber numberWithDouble:START_POINT]; 
NSNumber *xAxisLength = [NSNumber numberWithDouble:END_POINT - START_POINT]; 

double maxY = [[samples valueForKeyPath:@"@max.Y_VAL"] doubleValue]; 
NSNumber *yAxisStart = [NSNumber numberWithDouble:-maxY]; 
NSNumber *yAxisLength = [NSNumber numberWithDouble:2 *maxY]; 

CGRect hostingRect = CGRectMake(20, 330, 335, 347); 


CPTGraphHostingView *hostingView = [[CPTGraphHostingView alloc] initWithFrame:hostingRect]; 

[self.view addSubview:hostingView]; 

graph = [[CPTXYGraph alloc] initWithFrame:hostingView.bounds]; 

hostingView.hostedGraph = graph; 

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; 
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:xAxisStart 
               length:xAxisLength]; 

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:yAxisStart 
               length:yAxisLength]; 

CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] init]; 
dataSourceLinePlot.delegate = self; 

// LINE STYLE 
CPTMutableLineStyle *mainPlotLineStyle = [[dataSourceLinePlot dataLineStyle] mutableCopy]; 
[mainPlotLineStyle setLineWidth:2.0f]; 
[mainPlotLineStyle setLineColor:[CPTColor colorWithCGColor:[[UIColor whiteColor] CGColor]]]; 

[dataSourceLinePlot setDataLineStyle:mainPlotLineStyle]; 

// AXIS STYLE 

CPTXYAxisSet *axisSet = (CPTXYAxisSet *)[graph axisSet]; 

CPTXYAxis *xAxis = [axisSet xAxis]; 
CPTXYAxis *yAxis = [axisSet yAxis]; 
CPTMutableLineStyle *axisLineStyle = [CPTMutableLineStyle lineStyle]; 
[axisLineStyle setLineWidth:1]; 
[axisLineStyle setLineColor:[CPTColor colorWithCGColor:[[UIColor whiteColor] CGColor]]]; 

[xAxis setAxisLineStyle:axisLineStyle]; 
[xAxis setMajorTickLineStyle:axisLineStyle]; 
[yAxis setAxisLineStyle:axisLineStyle]; 
[yAxis setMajorTickLineStyle:axisLineStyle]; 


[graph addPlot:dataSourceLinePlot]; 
NSLog(@"PLOT: %@",dataSourceLinePlot); 
[graph reloadData]; 

} 


-(void)generateDataSamples{ 
double length = (END_POINT - START_POINT); 
double delta = length/(NUM_SAMPLES -1); 

samples = [[NSMutableArray alloc] initWithCapacity:NUM_SAMPLES]; 

for (int i = 0; i < NUM_SAMPLES; i++) { 
    double x = START_POINT + (delta * i); 

    //X^2 
    double y = x * x; 

    NSDictionary *sample = [NSDictionary dictionaryWithObjectsAndKeys: 
          [NSNumber numberWithDouble:x],X_VAL, 
          [NSNumber numberWithDouble:y],Y_VAL, 
          nil]; 
    NSLog(@"SAMPLE: %@", sample); 
    [samples addObject:sample]; 
} 

[graph reloadData]; 


} 

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot{ 
return NUM_SAMPLES; 
} 

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index{ 
NSDictionary *sample = [samples objectAtIndex:index]; 

if (fieldEnum == CPTScatterPlotFieldX) { 
    return [sample valueForKey:X_VAL]; 
}else{ 
    return [sample valueForKey:Y_VAL]; 
} 
} 

ответ

1

Обнаружена проблема! Источник данных для сюжета не был установлен, я должен был сделать:

dataSourceLinePlot.dataSource = self; 

Я нашел это, когда мой метод numberOfRecordsPerPlot никогда не вызывается.

0

по умолчанию является белым, и это не выглядит, как вы изменили его. Строка графика рисуется белым цветом, поэтому она не отображается на белом фоне. Попробуйте использовать стиль линии по умолчанию или это:

mainPlotLineStyle.lineColor = [CPTColor blackColor]; 
+1

Извините, чтобы объяснить, мой фон черный. Я установил цвет линии сюжета на белый, но до сих пор нет кубиков, чтобы заставить его появиться. Я также изменил цвет своего представления, чтобы увидеть, появляется ли строка в другом цвете безрезультатно. – arcade16

+0

Проверьте расчёт 'maxY' и убедитесь, что он правильный. –

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