问题:在使用自动缩放([plotSpace scaleToFitPlots:[graph allPlots]
)时,我无法让Core Plot(1.1)为我的 x -axis绘制自动标签。
我尝试了什么:我更改了偏移和填充的值,但这并没有改变结果。
但是,当关闭自动缩放(不使用[plotSpace scaleToFitPlots:[graph allPlots]]
并自动设置 y 刻度时, x -axis的自动标记可以正常工作。
问题:Core Plot中是否有错误或我做错了什么? 我将不胜感激任何帮助!
谢谢!
这就是我设置图表的方式:
CPTBarPlot *barPlot = [CPTBarPlot
tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
barPlot.baseValue = CPTDecimalFromInt(0);
barPlot.barOffset = CPTDecimalFromFloat(0.0f); // CPTDecimalFromFloat(0.5f);
barPlot.barWidth = CPTDecimalFromFloat(0.4f);
barPlot.barCornerRadius = 4;
barPlot.labelOffset = 5;
barPlot.dataSource = self;
barPlot.delegate = self;
graph = [[CPTXYGraph alloc]initWithFrame:self.view.bounds];
self.hostView.hostedGraph = graph;
graph.paddingLeft = 40.0f;
graph.paddingTop = 30.0f;
graph.paddingRight = 30.0f;
graph.paddingBottom = 50.0f;
[graph addPlot:barPlot];
graph.plotAreaFrame.masksToBorder = NO;
graph.plotAreaFrame.cornerRadius = 0.0f;
graph.plotAreaFrame.borderLineStyle = borderLineStyle;
double xAxisStart = 0;
CPTXYAxisSet *xyAxisSet = (CPTXYAxisSet *)graph.axisSet;
CPTXYAxis *xAxis = xyAxisSet.xAxis;
CPTMutableLineStyle *lineStyle = [xAxis.axisLineStyle mutableCopy];
lineStyle.lineCap = kCGLineCapButt;
xAxis.axisLineStyle = lineStyle;
xAxis.majorTickLength = 10;
xAxis.orthogonalCoordinateDecimal = CPTDecimalFromDouble(yAxisStart);
xAxis.paddingBottom = 5;
xyAxisSet.delegate = self;
xAxis.delegate = self;
xAxis.labelOffset = 0;
xAxis.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
[plotSpace scaleToFitPlots:[graph allPlots]];
CPTMutablePlotRange *yRange = plotSpace.yRange.mutableCopy;
[yRange expandRangeByFactor:CPTDecimalFromDouble(1.3)];
plotSpace.yRange = yRange;
NSInteger xLength = CPTDecimalIntegerValue(plotSpace.xRange.length) + 1;
plotSpace.xRange = [CPTPlotRange
plotRangeWithLocation:CPTDecimalFromDouble(xAxisStart)
length:CPTDecimalFromDouble(xLength)] ;
Eric的回答有所帮助。现在绘制了x标签,但是在错误的y位置(偏移)。如何将它们绘制在x轴下方(请参阅下面的屏幕截图):
)。
谢谢!
答案 0 :(得分:4)
缩放绘图空间后,为轴设置orthogonalCoordinateDecimal
。只是一个猜测,但用于定位x轴的yAxisStart
值可能超出了缩放范围。
答案 1 :(得分:0)
我有同样的问题并通过添加另一个带有lineWidth:0.0和clearColor at(x,y)值(-1,-1)的图来修补它。 scaleToFit包含此图并显示我的标签和轴。