【问题标题】:Core plot create dynamic Y axis and display graph very clear核心绘图创建动态Y轴并显示图表非常清晰
【发布时间】:2013-05-27 10:10:44
【问题描述】:

如何通过自动传递 yMin 和 yMax 图表来创建动态 y 轴并显示非常清晰。

例如,我的数据是 Y 轴 99.7, 99.3, 99.2, 99.0 ,100。

所以我希望 y 轴从 99 开始以 100 为增量,增量为 0.1,这样图表将显示得非常清晰。

我的代码 sn-p 如下 // 4 - 配置y轴

  y_monthly.title = lbl_M_HasDelay.text;
    y_monthly.labelAlignment = CPTAlignmentCenter;
    y_monthly.titleTextStyle = axisTitleStyle;
    y_monthly.titleOffset = -30.0f;
    y_monthly.axisLineStyle = axisLineStyle;
    y_monthly.majorGridLineStyle = gridLineStyle;
    y_monthly.labelingPolicy = CPTAxisLabelingPolicyNone;
    y_monthly.labelTextStyle = axisTextStyle;
    y_monthly.labelOffset = 16.0f;
    y_monthly.majorTickLineStyle = axisLineStyle;
    y_monthly.majorTickLength = 4.0f;
    y_monthly.minorTickLength = 2.0f;
    y_monthly.tickDirection = CPTSignPositive;
    NSMutableSet *yLabels = [NSMutableSet set];
    NSMutableSet *yMajorLocations = [NSMutableSet set];
    NSMutableSet *yMinorLocations = [NSMutableSet set];
    float minorIncrement=month_MaxY1/10;
    float majorIncrement = minorIncrement*2;
    float yMax = month_MaxY1;

    for (float j = minorIncrement; j <= yMax; j += minorIncrement)
    {
        float mod = fmodf(j, majorIncrement);
        if (mod == 0) {
            CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:[NSString stringWithFormat:@""]textStyle:y_monthly.labelTextStyle];
            [label setAlignment:CPTAlignmentTop];
            NSDecimal location = CPTDecimalFromFloat(j);
            label.tickLocation = location;
            label.offset = -y_monthly.majorTickLength - y_monthly.labelOffset;
            if (label) {
                [yLabels addObject:label];
            }
            [yMajorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:location]];
        } else {

            [yMinorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromFloat(j)]];
        }
    }
    y_monthly.axisLabels = yLabels;
    y_monthly.majorTickLocations = yMajorLocations;
    y_monthly.minorTickLocations = yMinorLocations;

其中month_MaxY1 =100,而month_MinY1 =90.0。 请帮帮我

【问题讨论】:

    标签: iphone ios5 core-plot


    【解决方案1】:

    使用绘图空间设置 y 轴的范围:

    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(99.0)
                                                    length:CPTDecimalFromDouble(1.0)];
    

    标记轴:

    y_monthly.labelingPolicy = CPTAxisLabelingPolicyFixedInterval;
    y_monthly.majorIntervalLength = CPTDecimalFromDouble(0.1);
    

    这将沿 y 轴每隔 0.1 个单位制作刻度和标签。设置labelFormatterlabelTextStyle 来控制标签的外观。

    【讨论】:

    • 我仍然需要运行循环以在 y 轴上绘制主要或矿工间隔,这是我在上面的代码中所做的。请帮帮我。
    • 谢谢埃里克...你真的很棒..:)
    • 否,固定间隔标注策略将设置刻度位置和标签。
    • 请看这个截图,请告诉我如何在距离 y 轴一定距离处绘制 x 轴点,现在 x 轴覆盖 y 轴。 dropbox.com/s/ltghvfjzbrmebc0/…
    • 还有如何在 y 轴中显示小数点后 4-5 位 ..?
    【解决方案2】:

    我猜你的问题是让你的 X 轴显示在图表的 yMin 位置。 你需要做的是:

     x_axis.orthogonalCoordinateDecimal = CPTDecimalFromDouble(yMin);
    

    【讨论】:

    • Martin Ullrich:它没有按我的意愿工作。即使我将绘图空间从 99.0 设置为 100.0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多