scaleToFitPlots를 호출 한 후 내 X 축의 크기가 올바르게 조정되었지만 Y 축이 너무 높습니다. 첨부 된 두 개의 스크린 샷, 첫 번째 그림 : 원본, 두 번째 그림 : 아래로 스크롤 한 후. Coreplot scaletofitplotissue
는 I 그래프 녹색 박스 내 (Y = MAX 행에서 Y = 0) 전적으로 볼 원한다. iPhone, iPad에서 잘못된 Y 축 스케일링이 발생합니다.
어떤 이유로 인해 plotArea가 실제보다 더 크다고 생각합니까? 그래프 내 구성 코드
니펫
-(void)configureGraph {
CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:self.hostView.bounds];
graph.plotAreaFrame.borderLineStyle = nil;
self.hostView.hostedGraph = graph;
//Controls padding between frame & draw
[graph.plotAreaFrame setPaddingTop:20.0f];
[graph.plotAreaFrame setPaddingRight:20.0f];
[graph.plotAreaFrame setPaddingBottom:20.0f];
[graph.plotAreaFrame setPaddingLeft:30.0f];
//Controls padding between frame and graph (graph is wrapper)
graph.paddingLeft = 0.0;
graph.paddingTop = 0.0;
graph.paddingRight = 0.0;
graph.paddingBottom = 0.0;
// 5 - Enable user interactions for plot space
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
plotSpace.allowsUserInteraction = YES;
}
-(void)scaleToFitPlot
{
CPTGraph *graph = [self getGraph];
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
[plotSpace scaleToFitPlots:[NSArray arrayWithObjects:self.meterPlot, nil]];
}
-(void)configurePlots {
// 1 - Get graph and plot space
CPTGraph *graph = self.hostView.hostedGraph;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
// 2 - Create the three plots
meterPlot = [[CPTScatterPlot alloc] init];
meterPlot.dataSource = self;
meterPlot.identifier = MYMSymbolHourly;
// Set plot delegate, to know when symbols have been touched
// We will display an annotation when a symbol is touched, but this can be another graph!
meterPlot.delegate = self;
meterPlot.plotSymbolMarginForHitDetection = 5.0f;
//CPTColor *meterColor = [CPTColor greenColor];
CPTColor *meterColor = [self orangeClr];
[graph addPlot:meterPlot toPlotSpace:plotSpace];
// 3 - Set up plot space
printf("\nset initialscale");
//[plotSpace scaleToFitPlots:[NSArray arrayWithObjects:meterPlot, nil]];
[self scaleToFitPlot];
CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy];
//[xRange expandRangeByFactor:CPTDecimalFromCGFloat(1.1f)];
plotSpace.xRange = xRange;
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy];
//[yRange expandRangeByFactor:CPTDecimalFromCGFloat(1.2f)];
plotSpace.yRange = yRange;
// 4 - Create styles and symbols
CPTMutableLineStyle *meterLineStyle = [meterPlot.dataLineStyle mutableCopy];
meterLineStyle.lineWidth = 2.5;
meterLineStyle.lineColor = meterColor;
meterPlot.dataLineStyle = meterLineStyle;
CPTMutableLineStyle *meterSymbolLineStyle = [CPTMutableLineStyle lineStyle];
meterSymbolLineStyle.lineColor = meterColor;
CPTPlotSymbol *meterSymbol = [CPTPlotSymbol ellipsePlotSymbol];
meterSymbol.fill = [CPTFill fillWithColor:meterColor];
meterSymbol.lineStyle = meterSymbolLineStyle;
meterSymbol.size = CGSizeMake(6.0f, 6.0f);
meterPlot.plotSymbol = meterSymbol;
}
-(void)configureAxes {
// 1 - Create styles
CPTMutableTextStyle *axisTitleStyle = [CPTMutableTextStyle textStyle];
axisTitleStyle.color = [self grey222Clr];
axisTitleStyle.fontName = @"Helvetica-Bold";
axisTitleStyle.fontSize = 12.0f;
CPTMutableLineStyle *axisLineStyle = [CPTMutableLineStyle lineStyle];
axisLineStyle.lineWidth = 2.0f;
axisLineStyle.lineColor = [self axisGreyClr];
CPTMutableTextStyle *xAxisTextStyle = [[CPTMutableTextStyle alloc] init];
xAxisTextStyle.color = [self grey222Clr]; // This is causing that line bug on y axis
xAxisTextStyle.fontName = @"Helvetica-Bold";
xAxisTextStyle.fontSize = 10.0f;
CPTMutableLineStyle *tickLineStyle = [CPTMutableLineStyle lineStyle];
tickLineStyle.lineColor = [self axisGreyClr];
tickLineStyle.lineWidth = 2.0f;
CPTMutableLineStyle *gridLineStyle = [CPTMutableLineStyle lineStyle];
gridLineStyle.lineColor = [self axisGreyClr];
gridLineStyle.lineWidth = 2.0f;
gridLineStyle.dashPattern = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.8f], nil];
gridLineStyle.patternPhase=0.0f;
// 2 - Get axis set
CPTXYAxisSet *axisSet = (CPTXYAxisSet *) self.hostView.hostedGraph.axisSet;
// 3 - Configure x-axis
CPTAxis *x = axisSet.xAxis;
x.title = [self getXAxisTitleForChart];
x.titleTextStyle = axisTitleStyle;
x.titleOffset = 15.0f;
x.axisLineStyle = axisLineStyle;
x.labelingPolicy = CPTAxisLabelingPolicyNone;
x.labelTextStyle = xAxisTextStyle;
x.majorTickLineStyle = axisLineStyle;
x.majorTickLength = 4.0f;
x.tickDirection = CPTSignNegative;
x.majorGridLineStyle = gridLineStyle;
[self setXAxisLabels];
CPTMutableTextStyle *yAxisTextStyle = [[CPTMutableTextStyle alloc] init];
yAxisTextStyle.color = [self orangeClr];
yAxisTextStyle.fontName = @"Helvetica-Bold";
yAxisTextStyle.fontSize = 11.0f;
// 4 - Configure y-axis
CPTAxis *y = axisSet.yAxis;
y.title = @"Usage kWh";
y.titleTextStyle = axisTitleStyle;
y.titleOffset = -46.0f;
y.axisLineStyle = axisLineStyle;
y.majorGridLineStyle = gridLineStyle;
y.labelingPolicy = CPTAxisLabelingPolicyNone;
y.labelTextStyle = yAxisTextStyle;
y.labelOffset = 30.0f;
y.majorTickLineStyle = axisLineStyle;
y.majorTickLength = 4.0f;
y.minorTickLength = 2.0f;
y.tickDirection = CPTSignPositive;
[self setYAxisLabels];
}
뷰의 현재 모든 플롯에 맞게 스케일링되지 않습니까? 어떤 행동을 성취하고 싶습니까? –
플롯이 하나뿐입니다. 네가 plotSpace 주위를 드래그하면 예가 나타납니다. 그러나 플롯이 녹색 상자의 크기 내에 완전히 포함되도록하고 싶습니다. – Baconbeastnz
yRange로 인해 문제가됩니까? – iDev