我想在iphone上使用coreplot绘制XY图,x轴上有日期,y轴上有一些值 . 参考使用coreplot SDK运送的DatePlot示例,我能够以月为单位在x轴上绘制带日期的图表(即x范围从月份的1个日期到上次日期) . 现在我想要一个年度尺度,即我想在x轴上显示所有月份名称(Jan,Feb,Mar等),并且我的时间间隔为1个月时间 .
我使用以下代码以月为单位显示值
oneXUnit = 60 * 60 * 24;
x.majorIntervalLength = CPDecimalFromFloat((float) oneXUnit);
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init]autorelease];
NSString *dateString = @"0";
[dateFormatter setDateFormat:@"MM"];
CPTimeFormatter *timeFormatter = [[CPTimeFormatter alloc]initWithDateFormatter:dateFormatter];
timeFormatter.referenceDate = [dateFormatter dateFromString:dateString];
x.labelFormatter = timeFormatter;
现在对于年度模式,x tick inteval需要一个月 . 我尝试了下面的代码,但没有工作
oneXUnit = 60 * 60 * 24 * 30;
x.majorIntervalLength = CPDecimalFromFloat((float) oneXUnit);
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init]autorelease];
NSString *dateString = @"Jan";
[dateFormatter setDateFormat:@"MMM"];
CPTimeFormatter *timeFormatter = [[CPTimeFormatter alloc]initWithDateFormatter:dateFormatter];
timeFormatter.referenceDate = [dateFormatter dateFromString:dateString];
x.labelFormatter = timeFormatter;
我认为这种逻辑失败了,因为每个月的天数都不同 . 现在几个月在x轴上显示,但它显示为
一月,三月,四月,五月,五月,六月,七月,八月,九月,十月,十一月,分解 .
你可以看到没有2月,5月有2个条目 . 我的滴答间隔如何与每个月的天数相关 . 有解决方案?感谢致敬,
2 回答
我有同样的问题 . 我的快速和肮脏的解决方案是进行自定义标记,循环整个月并将时间戳添加到数组 .
刚刚在相关问题中回答 . 使用CPTCalendarFormatter而不是CPTTimeFormatter,当你必须以秒为单位设置时间间隔偏移时(例如小时= 60 * 60,天= 24 * 60 * 60),这是好的,但是月数有可变的天数/秒(30 * 24 * 60 * 60或31 * 24 * 60 * 60,28,闰年ecc . ) . CPTCalendarFormatter允许您决定标签上日期计算的日历单位 . 通过这种方式,修复了参考日期和参考日历单位,在数据源方法中,您将必须返回从参考日期开始的那些单位的数量 .
这是完整的代码,享受 .
在viewDidLoad或其他位置初始化图形:
在轴上返回值的数据源方法: