gpt4 book ai didi

iphone - iOS CorePlot - 折线图,x 轴为日期,y 轴为双数

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:44 26 4
gpt4 key购买 nike

我需要帮助来使用 CorePlot 绘制日期与数字图表。我已经检查了 DatePlot。但是我的要求有点不同,如下所示。

我有一个对象数组,其中每个对象都有一个 NSDate 和一个 Double 数字。 例如: 5 个对象的数组:(格式为 yyyy-mm-dd 的 NSDate)

  • 对象 1 - 2012-05-01 - 10.34
  • 对象 2 - 2012-05-02 - 10.56
  • 对象 3 - 2012-05-03 - 10.12
  • 对象 4 - 2012-05-04 - 10.78
  • 对象 5 - 2012-05-05 - 10.65

此数据来自服务,每次都会有所不同。

请指教。

最佳答案

我使用 CPTScatterPlot 来显示像您这样的时间序列数据图。

您需要创建一个数据源类,核心绘图在绘制图形时将查询该数据源类。我的数据源对象包含一个 NSArray 对象,该对象具有两个属性:observationDateobservationValue。该类必须实现 CPTPlotDataSource 协议(protocol)。这些是我实现的协议(protocol)方法:

#pragma mark- CPPlotDataSource protocol methods
- (NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
// return the number of objects in the time series
return [self.timeSeries count];
}

-(NSNumber *)numberForPlot:(CPTPlot *)plot
field:(NSUInteger)fieldEnum
recordIndex:(NSUInteger)index
{
NSNumber * result = [[NSNumber alloc] init];
// This method returns x and y values. Check which is being requested here.
if (fieldEnum == CPTScatterPlotFieldX)
{
// x axis - return observation date converted to UNIX TS as NSNumber
NSDate * observationDate = [[self.timeSeries objectAtIndex:index] observationDate];
NSTimeInterval secondsSince1970 = [observationDate timeIntervalSince1970];
result = [NSNumber numberWithDouble:secondsSince1970];
}
else
{
// y axis - return the observation value
result = [[self.timeSeries objectAtIndex:index] observationValue];
}
return result;
}

请注意,我正在将日期转换为 double 日期 - 无法直接绘制日期。我在类上实现了其他方法以返回值,例如时间序列的开始和结束日期以及最小/最大值 - 这些在配置图形的 PlotSpace 时很有用。

一旦你初始化了你的数据源,你就可以将它分配给你的 CPTScatterPlot 的 dataSource 属性:

...
CPTXYGraph * myGraph = [[CPTXYGraph alloc] initWithFrame:self.bounds];

// define your plot space here (xRange, yRange etc.)
...

CPTScatterPlot * myPlot = [[CPTScatterPlot alloc] initWithFrame:graph.defaultPlotSpace.accessibilityFrame];

// graphDataSource is your data source class
myPlot.dataSource = graphDataSource;
[myGraph addPlot:myPlot];
...

查看核心绘图下载中的 CPTTestApp,了解配置图形和绘图空间的详细信息。如果您需要更多详细信息,请询问。祝你好运!

关于iphone - iOS CorePlot - 折线图,x 轴为日期,y 轴为双数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com