ios - Core Plot 不画轴,为什么?

标签 ios core-plot

我正在学习 Core Plot,我已经用 Core Plot 1.2 绘制了下图的 sinus 函数:

Sinus Plot with Core Plot

如您所见,即使我按照以下代码段配置轴,也不会绘制轴。

CPTMutableLineStyle *axisLineStyle = [CPTMutableLineStyle lineStyle];
axisLineStyle.lineWidth = 2.0f;
axisLineStyle.lineColor = [CPTColor blackColor];

CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;
axisSet.xAxis.axisLineStyle = axisLineStyle;
axisSet.yAxis.axisLineStyle = axisLineStyle;

我的问题是:为什么没有显示坐标轴?如何强制 CorePlot 绘制它们? .

这是完整的相关代码:
-(void)viewDidLoad
{
    [super viewDidLoad];

    self.graph = [[CPTXYGraph alloc] initWithFrame:self.view.frame];
    CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
    hostingView.hostedGraph = self.graph;


    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-4) length:CPTDecimalFromFloat(8)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-2.0) length:CPTDecimalFromFloat(4.0)];


    CPTScatterPlot *sinusPlot = [[CPTScatterPlot alloc] initWithFrame:self.graph.frame];
    sinusPlot.dataSource = self;
    sinusPlot.backgroundColor = [CPTColor whiteColor].cgColor;

    CPTMutableLineStyle *axisLineStyle = [CPTMutableLineStyle lineStyle];
    axisLineStyle.lineWidth = 2.0f;
    axisLineStyle.lineColor = [CPTColor blackColor];

    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;
    axisSet.xAxis.axisLineStyle = axisLineStyle;
    axisSet.yAxis.axisLineStyle = axisLineStyle;

    [self.graph addPlot:sinusPlot];


}

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


-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)idx
{
    static double pi = 3.14159;
    double x = pi*((((double)idx) - 51.0)/50.0);

    if (fieldEnum == CPTScatterPlotFieldX)
        return [NSNumber numberWithDouble:x];
    else
        return [NSNumber numberWithDouble:sin(x + ((x<0)?2*pi:0))];
}

最佳答案

添加以下行:

self.graph.backgroundColor = [CPTColor whiteColor].cgColor;

viewDidLoad解决了这个问题。

我的解释是轴集是 CPTGraphHostingView 的属性。 (这里 self.graph ),而不是情节。我正在更改绘图的图层背景颜色,而不是更改图形的图层背景颜色。由于坐标区的颜色仍与其包含层的背景颜色相同,因此它们不可见。

为了将来引用,viewDidLoad 的简单工作版本, 如下:
-(void)viewDidLoad
{
    [super viewDidLoad];

    self.graph = [[CPTXYGraph alloc] initWithFrame:self.view.frame];
    CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
    hostingView.hostedGraph = self.graph;

    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-4) length:CPTDecimalFromFloat(8)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-2.0) length:CPTDecimalFromFloat(4.0)];

    CPTScatterPlot *sinusPlot = [[CPTScatterPlot alloc] initWithFrame:self.graph.frame];
    sinusPlot.dataSource = self;

    self.graph.backgroundColor = [CPTColor whiteColor].cgColor;

    [self.graph addPlot:sinusPlot];

}

我希望这会帮助像我现在的自己一样的 CorePlot 新手。

关于ios - Core Plot 不画轴,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533908/

相关文章:

ios - 日期值超出 Safari Mobile 中的日期限制

objective-c - 默认显示引脚信息

iphone - 具有左右 Y 轴的核心图

ios - Plot_Gallery_iOS 中的实时绘图不会更新 iPad 中的绘图范围

ios - Core Plot 轴标签不使用我的数字格式化程序

objective-c - 我可以使用多张图像而不是一张来制作动画吗?

ios - NSFileSystemFreeSize : translating result into user friendly display of mb/gb?

ios - 如何使用Coreplot为绘图提供多种颜色

ios - 在 CorePlot : no idea how 中向饼图添加标签

javascript - 停止动量滚动 ontouchstart ngTouch AngularJS