1

問題:自動スケーリング ( ) を使用している場合、Core Plot (1.1) でx軸の自動ラベルをプロットできません[plotSpace scaleToFitPlots:[graph allPlots]

試したこと:オフセットとパディングの値を変更しましたが、結果は変わりませんでした。ただし、オートスケールをオフにすると ( y[plotSpace scaleToFitPlots:[graph allPlots]]スケールを自動的に使用および設定しないと、 x軸の自動ラベル付けが機能します。

質問: 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)] ;

編集

エリックの答えが役に立ちました。x ラベルがプロットされるようになりましたが、y 位置 (オフセット) が間違っています。x 軸のすぐ下にプロットするにはどうすればよいですか (以下のスクリーンショットを参照してください):) ここに画像の説明を入力ここに画像の説明を入力

ありがとうございました!

4

2 に答える 2

4

orthogonalCoordinateDecimalプロット スペースをスケーリングした後、軸の を設定します。推測ですが、yAxisStartx 軸の配置に使用される値は、スケーリングされた範囲外である可能性があります。

于 2012-12-02T17:01:40.617 に答える
0

同じ問題があり、lineWidth:0.0 と clearColor を (x,y) の値 (-1,-1) に別のプロットを追加してパッチを適用しました。scaleToFit にはこのプロットが含まれ、ラベルと軸が表示されます。

于 2015-08-30T15:43:47.407 に答える