如何在iPhone的Core-Plot中的渐变散点图中更改负值的区域渐变颜色?
我想要渐变颜色如下:
正值为绿色
负值为红色.
我该怎么办?
我正在使用CorePlot来绘制一组数据.我的x轴的数据由日期组成,而我的y轴的数据由浮点数组成(然后我将其转换为NSNumber).我从Feed中获取数据,并且Feed返回具有大量小数的数字,例如:0.46673718852844,4.59392222219,353.1293012045.我正在使用以下代码来正确格式化y轴:
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:3];
[numberFormatter setPositiveFormat:@"###0.000"];
CPTXYAxis *y = axisSet.yAxis;
y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
y.minorTicksPerInterval = 1;
y.preferredNumberOfMajorTicks = 5;
y.labelFormatter = numberFormatter;
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,一切正常.但是,有时它会沿轴的多个位置显示相同的值.见下图:

值正确显示,我只想避免不必要的(0.466)标签.我甚至尝试将数字四舍五入到numberForPlot方法中:
if(fieldEnum == CPTScatterPlotFieldY)
{
float floatNum = r.value;
floatNum *= 1000;
int intValue = (int) floatNum;
float decimal = floatNum - intValue;
if (decimal > 0.5) {
intValue++;
}
floatNum = intValue /1000.0;
return [NSNumber numberWithFloat:floatNum];
}
Run Code Online (Sandbox Code Playgroud)
但标签没有区别.
我在iOS应用程序中实现了CorePlot图形,但是我无法根据集合中的数据点动态调整y轴的大小.一些数据集的范围为10-50,而其他数据集的范围为400-500.在这两种情况下,我都希望y-origin(0)可见.
我尝试过使用scaletofitplots方法:
[graph.defaultPlotSpace scaleToFitPlots:[graph allPlots]];
Run Code Online (Sandbox Code Playgroud)
但这对图表没有影响,它们仍然显示默认的Y轴范围0到1.
我可以改变y轴的唯一方法是通过以下方式手动完成:
graph.defaultPlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f)) length:CPTDecimalFromFloat(500.0f)];
Run Code Online (Sandbox Code Playgroud)
但是,对于范围较小(10-50)的图表,这不适用,如您所能想象的那样.
是否有任何方法可以从我的数据集中检索最高的y值,以便我可以手动将最大y轴设置为该值?还是有更好的选择吗?
编辑:这是我正在使用的文件:
#import "TUTSimpleScatterPlot.h"
@implementation TUTSimpleScatterPlot
@synthesize hostingView = _hostingView;
@synthesize graph = _graph;
@synthesize graphData = _graphData;
-(id)initWithHostingView:(CPTGraphHostingView *)hostingView andData:(NSMutableArray *)data {
self = [super init];
if (self != nil) {
self.hostingView = hostingView;
self.graphData = data;
self.graph = nil;
}
return self;
}
-(void)initialisePlot {
if ((self.hostingView == nil) || (self.graphData == nil)) {
NSLog(@"TUTSimpleScatterPlot: Cannot Initialise plot with hosting view and data");
return; …Run Code Online (Sandbox Code Playgroud) 我调查大约一个星期一种交互和高性能的金融股票走势图的iPhone应用程序"像烛台/ OHLC图表的股市",我发现CorePlot,这是开源和免费的,ShinobiControls,这是非常轻便并且完美和有偿,我想知道是否还有其他建议我应该看看?
我有这个问题很长一段时间,我找不到任何解决这个问题.我读了几个论坛,但无法找到有效的解决方案.我有以下代码:
// Adjust graph using above data
CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-10) length:CPDecimalFromFloat(xmax + 17)];
plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-450) length:CPDecimalFromFloat(3750)];
// Setup axis
CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;
CPLineStyle *lineStyle = [CPLineStyle lineStyle];
lineStyle.lineColor = [CPColor whiteColor];
lineStyle.lineWidth = 1.0f;
CPTextStyle *cyanStyle = [CPTextStyle textStyle];
cyanStyle.color = [CPColor cyanColor];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:0];
// x axis with custom labels
axisSet.xAxis.labelingPolicy = CPAxisLabelingPolicyNone;
axisSet.xAxis.majorTickLineStyle = lineStyle;
axisSet.xAxis.axisLineStyle = lineStyle;
axisSet.xAxis.majorTickLength = 3.0f;
axisSet.xAxis.labelOffset …Run Code Online (Sandbox Code Playgroud) 我知道可以在coreplot绘图空间中打开滚动,如下所示:
plotSpace.allowsUserInteraction = YES;
Run Code Online (Sandbox Code Playgroud)
但这只会激活一对一的手指以进行图形运动.目前是否可以使用带有UIScrollView的coreplot来实现弹性效果(惯性,减速,反弹)?
在iPhone应用程序Roambi中,所显示的饼图可以设置为与用户一起旋转,就像旋转光盘一样.我们可以坚持并做很多事情.
有人提到Roambi应用程序是使用核心图库开发的:
如何操作使用Core plot开发的饼图?
有没有办法使用核心图框架将平均水平线(或任何单线)添加到条形图图形中?
谢谢.
我正在尝试设置两个类似于Core Plot提供的AAPlot样本的图表.它基本上包括一个几乎正确显示的股票图表和第二个图表(交易量表),它应该直接放在股票图表下方.两个图表应共享相同的x轴.
不幸的是,体积图的数据没有在我的应用程序中绘制.
即使我将示例源代码与我的强烈对比,我也找不到错误的来源.
你能指点我正确的方向吗?
这是我的代码:
- (void)configureChart
{
self.graph = [[CPTXYGraph alloc] initWithFrame:self.hostView.bounds];
self.hostView.hostedGraph = self.graph;
self.graph.paddingLeft = 0.0f;
self.graph.paddingTop = 0.0f;
self.graph.paddingRight = 0.0f;
self.graph.paddingBottom = 0.0f;
self.graph.axisSet = nil;
// 2 - Set up text style
CPTMutableTextStyle *textStyle = [CPTMutableTextStyle textStyle];
textStyle.color = [CPTColor grayColor];
textStyle.fontName = @"Helvetica-Bold";
textStyle.fontSize = 16.0f;
// 3 - Configure title
NSString *title = self.issue.company.companyName;
_graph.title = title;
_graph.titleTextStyle = textStyle;
_graph.titlePlotAreaFrameAnchor = CPTRectAnchorTop;
_graph.titleDisplacement = CGPointMake(0.0f, -12.0f);
// 4 - Set …Run Code Online (Sandbox Code Playgroud) 我正在使用CorePlot 0.3,一切正常,直到我将XCode升级到4.4(2天前),CorePlot无法构建,我收到一些错误消息:
clang:错误:-Z-reserved-lib-stdc ++:当'-c'存在时,'链接器'输入未使用命令/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang失败退出代码1
我试图搜索,似乎有很多人有同样的问题,我也找到了一些建议和解决方案来解决它,我已经应用到我的CorePlot版本但没有运气,问题出现在一些类,如:CPTPlot .m,CPTScatterPlot.m,CPTBarPlot.m,CPTPlotSymbol.m.
我已经花了2天时间解决这个问题,但仍然无法解决问题,请提前帮助我.

core-plot ×10
iphone ×7
ios ×4
objective-c ×3
bar-chart ×1
build ×1
charts ×1
cocoa-touch ×1
graph ×1
ios4 ×1
ios5 ×1
label ×1
uiscrollview ×1
xcode ×1
xcode4.4 ×1