gpt4 book ai didi

objective-c - CorePlot 图形计算器不在 (0;0) 点开始

转载 作者:行者123 更新时间:2023-12-03 17:07:06 32 4
gpt4 key购买 nike

我的应用程序中有一个用 CorePlot 编写的图形计算器插件。还有一个小错误 - 当图形出现在屏幕上时,显示的不是屏幕中心的点 (0;0),而是接近 (2;3) 的点。

代码如下:

-(void)viewDidLoad 
{

[super viewDidLoad];

graph = [[CPXYGraph alloc] initWithFrame:CGRectZero];
CPTheme *theme = [CPTheme themeNamed:kCPStocksTheme];
[graph applyTheme:theme];
CPGraphHostingView *hostingView = (CPGraphHostingView *)self.view ;
hostingView.hostedGraph = graph;

graph.paddingLeft =5;
graph.paddingTop = 5;
graph.paddingRight = 5;
graph.paddingBottom = 5;

CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.allowsUserInteraction = YES;
PlotSpaceX=2;
PlotSpaceY=3;
plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(1.0) length:CPDecimalFromFloat(PlotSpaceX)];
plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(1.0) length:CPDecimalFromFloat(PlotSpaceY)];

CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;
CPXYAxis *x = axisSet.xAxis;
x.majorIntervalLength = CPDecimalFromString(@"0.5");
x.orthogonalCoordinateDecimal = CPDecimalFromString(@"0");
x.minorTicksPerInterval = 2;

CPXYAxis *y = axisSet.yAxis;
y.majorIntervalLength = CPDecimalFromString(@"0.5");
y.minorTicksPerInterval = 2;
y.orthogonalCoordinateDecimal = CPDecimalFromString(@"0");

boundLinePlot = [[[CPScatterPlot alloc] init] autorelease];
boundLinePlot.identifier = @"Blue Plot";
boundLinePlot.dataLineStyle.miterLimit = 1.0f;
boundLinePlot.dataLineStyle.lineWidth = 3.0f;
boundLinePlot.dataLineStyle.lineColor = [CPColor redColor];
boundLinePlot.dataSource = self;
[graph addPlot:boundLinePlot];

NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:100000];
NSUInteger i;
for ( i = 0; i < 600000; i++ ) {
id x = [NSNumber numberWithFloat:i*0.05-1000];
id y =[NSNumber numberWithFloat: [x floatValue] *[x floatValue]];
[contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil]];
}
self.dataForPlot = contentArray;

}


#pragma mark -
#pragma mark Plot Data Source Methods

-(NSUInteger)numberOfRecordsForPlot:(CPPlot *)plot {
return [dataForPlot count];
}

-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
NSNumber *num = [[dataForPlot objectAtIndex:index] valueForKey:(fieldEnum == CPScatterPlotFieldX ? @"x" : @"y")];

return num;
}

如何解决这个问题,以便在加载图形时出现点 (0;0)?

最佳答案

如前所述,您的中心点应该是 (2, 2.5)。

绘图范围以起始位置和长度给出。 xRange 从 1 到 (1+2)=3,yRange 从 1 到 (1+3)=4。尝试这样的事情:

plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-PlotSpaceX) length:CPDecimalFromFloat(PlotSpaceX * 2.0)];
plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-PlotSpaceY) length:CPDecimalFromFloat(PlotSpaceY * 2.0)];

关于objective-c - CorePlot 图形计算器不在 (0;0) 点开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651628/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com