设置条形图的x轴以显示月份

时间:2014-08-27 14:56:02

标签: ios shinobi

大家好。

问题:我正试图让我的xAxis显示在我获得的NSdate的月份。

所需输出:在每个栏下,根据活动时间显示“Jan”,“Feb”,“Mar”等......

我通过几个线程阅读并尝试了方法,但没有任何帮助。我知道当我撞墙时我应该发一个问题而且我刚刚碰到它:(已经尝试了几天。

以下是我尝试的资源。

  • http://www.shinobicontrols.com/forum/shinobicontrols/2013/12/updating-date-format-on-an-axis-fails-except-on-chart-creation
  • http://www.shinobicontrols.com/forum/shinobicontrols/2014/7/x-axis-with-formatted-dates
  • http://stackoverflow.com/questions/13688920/how-to-change-the-xaxis-used-on-my-chart-shinobicharts

这是我目前的图表代码

intraix%20%E2%80%94%20UtilitiesDashboardTableViewController.m%20%E2%80%94%20Edited

图表本身也设置如下:

utilitiesBarChart = [[ShinobiChartalloc] initWithFrame:CGRectInset(cell.bounds,margin,margin)withPrimaryXAxisType: SChartAxisTypeDateTime withPrimaryYAxisType:SChartAxisTypeNumber];

这是我的xvalue

的代码

intraix%20%E2%80%94%20UtilitiesDashboardTableViewController.m%20%E2%80%94%20Edited

这是错误

intraix%20%E2%80%94%20UtilitiesDashboardTableViewController.m

我的图表继续显示在纪元时间:(

intraix%20%E2%80%94%20UtilitiesDashboardTableViewController.m%20and%20iOS%20Simulator%20-%20iPhone%20Retina%20(4-inch)%20/%20iOS%207.1%20(11D167)

任何帮助都会很棒:D

谢谢大家

1 个答案:

答案 0 :(得分:0)

我有一个类似的条形图,其中包含日期/时间x轴。以下是我创建x轴以显示“Jun 3”等日期的方法:

    // x-axis
    _xAxis = [[SChartDateTimeAxis alloc] init];
    _xAxis.style.lineColor = [UIColor colorWithWhite:0.5f alpha:1.0f];
    _xAxis.style.lineWidth = @1;
    _xAxis.style.majorTickStyle.showLabels = YES;
    _xAxis.style.majorTickStyle.labelFont = [UIFont systemFontOfSize:9];
    _xAxis.style.majorTickStyle.labelColor = [UIColor colorWithWhite:0.5f alpha:1.0f];
    _xAxis.style.majorTickStyle.showTicks = YES;
    _xAxis.style.majorTickStyle.lineWidth = @(1);
    _xAxis.style.majorTickStyle.lineColor = COLOR_BACKGROUND;

    _xAxis.labelFormatString = @"MMM d";

您可以选择实现委托来执行其他格式化(例如在我的情况下将字符串设为大写):

-(void)sChart:(ShinobiChart *)chart alterTickMark:(SChartTickMark *)tickMark beforeAddingToAxis:(SChartAxis *)axis {
    tickMark.tickLabel.text = [tickMark.tickLabel.text uppercaseString];
}