【问题标题】:Core Plot Bar graph scroll the XaxisCore Plot 条形图滚动 X 轴
【发布时间】:2015-02-13 11:42:25
【问题描述】:

问题是即使增加全局xrange,条在小尺寸下也是可见的。

请找到我使用的以下代码

   CGFloat xMin = 0.0f;
    CGFloat xMax = [[[GraphsDataHolder sharedInstance] getCompanywisedaySales] count]+0;
    CGFloat yMin = 0.0f;
    CGFloat yMax = 5000.0f;  // should determine dynamically based on max price
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
    plotSpace.allowsUserInteraction = YES;
    plotSpace.delegate =self;
   // plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(xMax)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)];
    plotSpace.globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(yMin) length:CPTDecimalFromInt(yMax)];

    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(xMin)length:CPTDecimalFromInt(xMax)];
    plotSpace.globalXRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(xMin) length:CPTDecimalFromInt(xMax+2)];

请找到屏幕截图 目前我得到的屏幕如下

需要获取下图

【问题讨论】:

  • 通过设置barWidth?
  • 通过增加条形宽度,所有图表都重叠
  • 以上代码没有使用我提供的总范围
  • 取决于区间长度和 CPTXYPlotSpace x 和 y 值
  • 可以在此处添加示例代码

标签: ios objective-c graph core-plot


【解决方案1】:

这是我的代码。对我来说效果很好。

-(void)callingRevenueGraph
{
    graph1 = [[CPTXYGraph alloc] initWithFrame:CGRectMake(10,120,850,120)];

graph1.backgroundColor = (__bridge CGColorRef)([UIColor clearColor]);
graph1.paddingTop = 15.0;
graph1.paddingRight = 15.0;
graph1.paddingBottom = 20.0;
graph1.paddingLeft = 20.0;
graph1.borderColor = (__bridge CGColorRef)([CPTColor redColor]);
_revenueHostingView.hostedGraph = graph1;
maximum = [[revenueValuesArray objectAtIndex:0]intValue];
for(int max = 0;max<[revenueValuesArray count];max++)
{
    if(maximum < [[revenueValuesArray objectAtIndex:max]intValue])
        maximum = [[revenueValuesArray objectAtIndex:max]intValue];
}
NSLog(@"maximum value is %d",maximum);
if((maximum>=0) &&(maximum<10))
{
    intervalLength = 50;
}
else if((maximum>=10) &&(maximum<150))
{
    intervalLength = 75;
}
else if((maximum>=150) &&(maximum<500))
{
    intervalLength = 150;
}
else if((maximum>=500) &&(maximum<1500))
{
    intervalLength = 1000;
}
else if((maximum>=1500) &&(maximum<5000))
{
    intervalLength = 2500;
}
else if((maximum>=5000) &&(maximum<100000000))
{
    intervalLength = 5000;
}

double yAxisStart;


    if (intervalLength>0 && intervalLength <200) {
        yAxisStart = -50.0;
    }
    else if (intervalLength>=200 && intervalLength < 500)
        yAxisStart = -150;
    else
        yAxisStart = -550.0;


double yAxisLength =maximum;

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph1.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(-2)
                                                length:CPTDecimalFromFloat(33.5)];

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(yAxisStart)
                                                length:CPTDecimalFromDouble(yAxisLength+200)];

CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph1.axisSet;


NSNumberFormatter *Xformatter = [[NSNumberFormatter alloc] init];
[Xformatter setGeneratesDecimalNumbers:NO];
[Xformatter setNumberStyle:NSNumberFormatterDecimalStyle];
axisSet.xAxis.labelFormatter = Xformatter;
axisSet.xAxis.title = @"Days";
axisSet.xAxis.titleLocation = CPTDecimalFromFloat(10);
axisSet.xAxis.titleOffset = 15.0;
//axisSet.hidden = YES;
axisSet.yAxis.majorIntervalLength = CPTDecimalFromFloat(intervalLength);
axisSet.yAxis.minorTicksPerInterval = 1;
axisSet.yAxis.title = [NSString stringWithFormat:@"Amount(%@)", currencyClicked];
axisSet.yAxis.titleLocation = CPTDecimalFromFloat(30);
axisSet.yAxis.titleOffset = 30.0;
axisSet.xAxis.visibleRange =  [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInteger(0) length:CPTDecimalFromInteger(31)];
axisSet.yAxis.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInteger(0) length:CPTDecimalFromInteger(2000)];

CPTBarPlot *plot = [[CPTBarPlot alloc] initWithFrame:CGRectZero];

plot.identifier = @"Bar";
plot.dataSource=self;
plot.delegate=self;
plot.barOffset = CPTDecimalFromFloat(0);
plot.barWidth = CPTDecimalFromDouble(0.5);

plot.shadowRadius = 1;
plot.shadowOffset = CGSizeMake(1,-1);
plot.shadowOpacity = 0.8;


plot.fill = [CPTFill fillWithColor:[CPTColor greenColor]];
axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(1.0);


CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];

lineStyle.miterLimit =1.0f;
lineStyle.lineWidth = 2.5f;
lineStyle.lineColor = [CPTColor greenColor];
plot.lineStyle = lineStyle;
}

根据您的要求,您可以设置 barwidth = 1

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多