iOS应用中的条形图

15

我想在我的应用程序中绘制一个条形图。我应该如何做呢?(我对图表一无所知)。请建议一些开始并继续操作的步骤。

谢谢

8个回答

23

这取决于你真正想要什么。如果你只需要一堆丑陋的条形图,那么core-plot可能有点过头了。

要实现一个条形图需要这么多代码。我认为这大约是core-plot数据源所需代码的一半。而即使是一个好的实现,也会比将core-plot集成到你的项目中少花费时间。
Core-plot是一个非常庞大的怪物,就像所有那些“我能做你想要的一切”的框架一样。

- (void)drawRect:(CGRect)rect {
    CGFloat height = self.bounds.size.height;
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, rect);
    CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);
    CGFloat barWidth = 30;
    int count = 0;
    for (NSNumber *num in values) {
        CGFloat x = count * (barWidth + 10);
        CGRect barRect = CGRectMake(x, height - ([num floatValue] * height), barWidth, [num floatValue] * height);
        CGContextAddRect(context, barRect);
        count++;
    }
    CGContextFillPath(context);
}

2
赞同;CoreGraphics实际上非常易于使用,尽管它非常灵活。在自定义的UIView子类中使用它几乎是微不足道的。它只是一堆绘图原语,因此建立到条形图的过程留给您来完成。正如fluchpunkt所展示的那样,对于简单的输出,这并不需要太多的工作。 - Tommy
4
为表赞同,支持您的真实陈述并用代码证明。 - Caleb
哇,这太容易了。对于一个简单的条形图来说,非常完美。谢谢! - coco

13

使用这个工具。

编辑

如果您需要安装Core Plot并遇到麻烦,请告诉我,我可以帮忙。

如果您只需要非常简单的图表,可以使用ECGraph


谢谢Vaibhav :) 除了使用CorePlot,你能否提供更多关于图形的信息?再次感谢。 - Akshay
4
欢迎,Akshay! :) 我之前提到的ECGraph是一个简单的绘图框架,你也可以尝试一下http://code.google.com/p/s7graphview/。这同样是一个简单而好看的框架。另外你也可以查看这些框架https://github.com/devinross/tapkulibrary, http://www.vvi.com/apps/graph/, http://sebkade.wordpress.com/2010/05/06/basic-graph-class-for-iphone/。 - Vaibhav Tekam
使用哪个框架,Akshay? - Vaibhav Tekam
我不确定该使用哪个框架?请指导我(对图形和其他东西非常陌生)。 - Akshay
+1给那个关于图表的不错的回答...我需要你的帮助在iOS 4.3上安装Coreplot图表并将其包含在项目中并使用。我会发布一个单独的问题,如果您准备好回答的话 ;) - mAc
显示剩余2条评论

5

4

我会说这近1000美元的价格标签有点儿阻碍了这里的进展;-) - Sebastian Flückiger
@SebastianFlückiger 你得到的就是你所付出的!如果你选择免费的话,CorePlot还是相当不错的。但是如果你想要真正快速和强大的东西,你必须为此付费。 - ColinE
3
明白了 - 但是提问者似乎并不是在寻找完全专业的解决方案 =),但老实说,忍者似乎非常棒,我刚刚仔细阅读了他们的页面。但是1,000美元对于做一些图形条来说是很多钱 ;) - Sebastian Flückiger

3

1

CorePlot 是 iOS 中最好的图形绘制库。以下是一些屏幕截图示例,展示了您可以使用它创建的内容。

如果您不想使用外部库,可以使用低级别的绘图框架,如核心图形进行绘制。苹果关于自定义绘图的文档在这里


0

0

我已经苦思冥想了一段时间。在许多情况下,子视图会起作用。只需使用代数,就可以轻松调整大小。

对于较大的视图,您可能希望避免使用视图,并深入绘制函数,然后使用代数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接